CloudCastle Lock API

LockStore

Хранилище блокировок: единая абстракция над механизмами взаимного исключения (файловые `flock`, кэш с TTL, память процесса), поверх которой работает {@see \CloudCastle\Lock\Lock}.

Блокировка идентифицируется ключом ресурса и удерживается конкретным владельцем — уникальным токеном. Только владелец может продлить или снять свою блокировку, что защищает от случайного снятия чужой (например, если исходный держатель «завис», а его блокировка уже истекла по TTL и перешла к другому).

Срок жизни ($ttlSeconds) задаёт автоматическое истечение для хранилищ с TTL (кэш, память); файловые блокировки (flock) удерживаются до явного снятия или завершения процесса, поэтому TTL для них игнорируется.

Table of Contents

Methods

acquire()  : bool
Попытаться захватить блокировку без ожидания (неблокирующе).
isAcquired()  : bool
Удерживается ли блокировка (любым владельцем) в данный момент.
refresh()  : bool
Продлить срок жизни блокировки, удерживаемой этим владельцем.
release()  : void
Снять блокировку, если она принадлежит этому владельцу.

Methods

acquire()

Попытаться захватить блокировку без ожидания (неблокирующе).

public acquire(string $key, string $owner, int|null $ttlSeconds) : bool
Parameters
$key : string

ключ ресурса

$owner : string

уникальный токен владельца

$ttlSeconds : int|null

срок жизни в секундах для хранилищ с TTL; null — до явного снятия

Return values
bool

true, если блокировка захвачена этим владельцем; false, если она уже удерживается кем-то другим

isAcquired()

Удерживается ли блокировка (любым владельцем) в данный момент.

public isAcquired(string $key) : bool
Parameters
$key : string

ключ ресурса

Return values
bool

true, если ресурс заблокирован и блокировка не истекла

refresh()

Продлить срок жизни блокировки, удерживаемой этим владельцем.

public refresh(string $key, string $owner, int|null $ttlSeconds) : bool
Parameters
$key : string

ключ ресурса

$owner : string

токен владельца

$ttlSeconds : int|null

новый срок жизни в секундах; null — бессрочно

Return values
bool

true, если блокировка принадлежит владельцу и продлена

release()

Снять блокировку, если она принадлежит этому владельцу.

public release(string $key, string $owner) : void

Снятие чужой блокировки — «тихая» операция без эффекта: посторонний токен не может освободить ресурс.

Parameters
$key : string

ключ ресурса

$owner : string

токен владельца

On this page

Search results