Exemplo n.º 1
0
 /**
  * @param float $lockGrabTimeout
  * @param int $lockHoldTimeout
  * @return boolean
  */
 public function lock($lockGrabTimeout = 2, $lockHoldTimeout = 5)
 {
     self::safeLog("Grabbing lock [{$this->key}]");
     $retryTimeout = microtime(true) + $lockGrabTimeout;
     while (microtime(true) < $retryTimeout) {
         if (!$this->store->add($this->key, true, $lockHoldTimeout)) {
             usleep(self::LOCK_GRAB_TRY_INTERVAL);
             continue;
         }
         self::safeLog("Lock grabbed [{$this->key}]");
         return true;
     }
     self::safeLog("Lock grab timed out [{$this->key}]");
     return false;
 }