Exemplo n.º 1
0
 function remove($item)
 {
     if (!sem_acquire($this->sem)) {
         throw new Scalr_System_Ipc_Exception("Cannot acquire semaphore");
     }
     try {
         $ret = false;
         if (-1 != ($i = $this->indexOf($item))) {
             $this->logger->debug("remove item at '{$i}'");
             $this->shm->remove($i);
             $meta = $this->getMeta();
             $meta["size"]--;
             //$this->logger->debug("Set meta after remove: " . var_export($meta, true));
             $this->putMeta($meta);
             $ret = true;
         }
         sem_release($this->sem);
         return $ret;
     } catch (Exception $e) {
         sem_release($this->sem);
         throw $e;
     }
 }
Exemplo n.º 2
0
 function offsetUnset($offset)
 {
     sem_acquire($this->sem());
     try {
         $intOffset = crc32($offset);
         $this->shm->remove($intOffset);
         $meta = $this->shm->get(0);
         $meta["count"]--;
         array_splice($meta["keys"], array_search($offset, $meta["keys"]), 1);
         $this->shm->put(0, $meta);
         sem_release($this->sem());
     } catch (Exception $e) {
         sem_release($this->sem());
         throw $e;
     }
 }