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
Create a new concurrency limiter instance.
Attempt to acquire the lock for the given number of seconds.
Attempt to acquire the lock.
Get the Lua script for acquiring a lock.
Release the lock.
Get the Lua script to atomically release a lock.
Details
void
__construct(Connection $redis, string $name, int $maxLocks, int $releaseAfter)
Create a new concurrency limiter instance.
mixed
block(int $timeout, callable|null $callback = null, int $sleep = 250)
Attempt to acquire the lock for the given number of seconds.
protected mixed
acquire(string $id)
Attempt to acquire the lock.
protected string
lockScript()
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 ARGV[3] - The unique identifier for this lock
protected void
release(string $key, string $id)
Release the lock.
protected string
releaseScript()
Get the Lua script to atomically release a lock.
KEYS[1] - The name of the lock ARGV[1] - The unique identifier for this lock
Laravel Cloud is the best place to deploy Laravel, Nuxt, Express, Hono, Node.js, Bun, Go, Flask, Python, and more, with dedicated infrastructure available on AWS through Laravel Private Cloud.