laravel / 8 / api / 8.x / illuminate / redis / limiters / concurrencylimiter.html

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(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

bool block(int $timeout, callable|null $callback = null)

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

Parameters

int $timeout
callable|null $callback

Return Value

bool

Exceptions

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

© Taylor Otwell
Licensed under the MIT License.
Laravel is a trademark of Taylor Otwell.
https://laravel.com/api/8.x/Illuminate/Redis/Limiters/ConcurrencyLimiter.html