public function Redis_Lock_Backend_Predis::lockReleaseAll in Redis 7
Same name and namespace in other branches
- 7.2 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 121
Class
- Redis_Lock_Backend_Predis
- Predis lock backend implementation.
Code
public function lockReleaseAll($lock_id = NULL) {
if (!isset($lock_id) && empty($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 = 'lock:' . $name;
// FIXME: Once again, this is not atomic, see lock_release() documentation.
$owner = $client
->get($key . ':owner');
if (empty($owner) || $owner == $id) {
$client
->del(array(
$key,
$key . ':owner',
));
}
}
}