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.

mixed
block(int $timeout, callable|null $callback = null, int $sleep = 250)

Attempt to acquire the lock for the given number of seconds.

mixed
acquire(string $id)

Attempt to acquire the lock.

string
lockScript()

Get the Lua script for acquiring a lock.

void
release(string $key, string $id)

Release the lock.

string
releaseScript()

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.

Parameters

Connection $redis
string $name
int $maxLocks
int $releaseAfter

Return Value

void

mixed block(int $timeout, callable|null $callback = null, int $sleep = 250)

Attempt to acquire the lock for the given number of seconds.

Parameters

int $timeout
callable|null $callback
int $sleep

Return Value

mixed

Exceptions

LimiterTimeoutException
Throwable

protected mixed acquire(string $id)

Attempt to acquire the lock.

Parameters

string $id

A unique identifier for this lock

Return Value

mixed

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

Return Value

string

protected void release(string $key, string $id)

Release the lock.

Parameters

string $key
string $id

Return Value

void

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

Return Value

string

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.