class DurationLimiter (View source)

Properties

int $decaysAt

The timestamp of the end of the current duration.

int $remaining

The number of remaining slots.

Methods

void
__construct(Connection $redis, string $name, int $maxLocks, int $decay)

Create a new duration limiter instance.

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

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

bool
acquire()

Attempt to acquire the lock.

string
luaScript()

Get the Lua script for acquiring a lock.

Details

void __construct(Connection $redis, string $name, int $maxLocks, int $decay)

Create a new duration limiter instance.

Parameters

Connection $redis
string $name
int $maxLocks
int $decay

Return Value

void

mixed 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

mixed

Exceptions

LimiterTimeoutException

bool acquire()

Attempt to acquire the lock.

Return Value

bool

protected string luaScript()

Get the Lua script for acquiring a lock.

KEYS[1] - The limiter name ARGV[1] - Current time in microseconds ARGV[2] - Current time in seconds ARGV[3] - Duration of the bucket ARGV[4] - Allowed number of tasks

Return Value

string