You are here

public function Redis_Lock_Backend_Predis::lockReleaseAll in Redis 7.2

Same name and namespace in other branches
  1. 7 lib/Redis/Lock/Backend/Predis.php \Redis_Lock_Backend_Predis::lockReleaseAll()

Release all locks for the given lock token identifier.

Parameters

string $lockId = NULL: (optional) If none given, remove all lock from the current page.

Overrides Redis_Lock_Backend_Interface::lockReleaseAll

File

lib/Redis/Lock/Backend/Predis.php, line 128

Class

Redis_Lock_Backend_Predis
Predis lock backend implementation.

Code

public function lockReleaseAll($lock_id = NULL) {
  if (!isset($lock_id) && empty($this->_locks)) {
    return;
  }
  $client = Redis_Client::getClient();
  $id = isset($lock_id) ? $lock_id : $this
    ->getLockId();

  // We can afford to deal with a slow algorithm here, this should not happen
  // on normal run because we should have removed manually all our locks.
  foreach ($this->_locks as $name => $foo) {
    $key = $this
      ->getKey($name);
    $owner = $client
      ->get($key);
    if (empty($owner) || $owner == $id) {
      $client
        ->del(array(
        $key,
      ));
    }
  }
}