ConcurrencyLimiter
class ConcurrencyLimiter (View source)
Properties
protected Connection | $redis | The Redis factory implementation. |
|
protected string | $name | The name of the limiter. |
|
protected int | $maxLocks | The allowed number of concurrent tasks. |
|
protected int | $releaseAfter | The number of seconds a slot should be maintained. |
Methods
void
__construct(Connection $redis, string $name, int $maxLocks, int $releaseAfter)
Create a new concurrency limiter instance.
bool
block(int $timeout, callable|null $callback = null)
Attempt to acquire the lock for the given number of seconds.
mixed
acquire()
Attempt to acquire the lock.
string
luaScript()
Get the Lua script for acquiring a lock.
void
release(string $key)
Release the lock.
Details
void
__construct(Connection $redis, string $name, int $maxLocks, int $releaseAfter)
Create a new concurrency limiter instance.
bool
block(int $timeout, callable|null $callback = null)
Attempt to acquire the lock for the given number of seconds.
protected mixed
acquire()
Attempt to acquire the lock.
protected string
luaScript()
Get the Lua script for acquiring a lock.
KEYS - The keys that represent available slots ARGV[1] - The limiter name ARGV[2] - The number of seconds the slot should be reserved
protected void
release(string $key)
Release the lock.