| 
<?php
 //
 // SharedMemory class
 //
 // Freeware
 // you can use this freely without any warranty
 // comments are appreciated: ra dot keizer at gmail dot com
 
 
 class SharedMemory {
 public $key;            //unique identifier for the shared memory block
 public $shm;            //holds shared memory resource
 public $mutex;            //holds the mutex
 public $size;            //bytes to allocate
 
 public function __construct($key=3354354334, $size=10000) {        //default key, can be overridden, same for size
 $this->key = $key;
 $this->size = $size;
 $this->Attach();    //create resources (shared memory + mutex)
 }
 
 //create resources
 public function Attach() {
 $this->shm = shm_attach($this->key, $this->size);    //allocate shared memory
 $this->mutex = sem_get($this->key, 1);        //create mutex with same key
 }
 
 //write to shared memory
 public function Set($var) {
 sem_acquire($this->mutex);    //block until released
 shm_put_var($this->shm, $this->key, $var);    //store var
 sem_release($this->mutex);    //release mutex
 }
 
 //read from shared memory
 public function Get() {
 sem_acquire($this->mutex);    //block until released
 $var = @shm_get_var($this->shm, $this->key);    //read var
 sem_release($this->mutex);    //release mutex
 return $var;
 }
 
 // in case you want to serialize/unserialize the sharedmemory object
 // this method restores all resources after unserializing
 public function __wakeup() {
 $this->Attach();
 }
 
 }
 
 
 
 
 
 ?>
 
 |