class ConcurrencyLimiterBuilder (View source)

Traits

Properties

Connection $connection

The Redis connection.

string $name

The name of the lock.

int $maxLocks

The maximum number of entities that can hold the lock at the same time.

int $releaseAfter

The number of seconds to maintain the lock until it is automatically released.

int $timeout

The amount of time to block until a lock is available.

int $sleep

The number of milliseconds to wait between attempts to acquire the lock.

Methods

int
secondsUntil(DateTimeInterface|DateInterval|int $delay)

Get the number of seconds until the given DateTime.

int
availableAt(DateTimeInterface|DateInterval|int $delay = 0)

Get the "available at" UNIX timestamp.

parseDateInterval(DateTimeInterface|DateInterval|int $delay)

If the given value is an interval, convert it to a DateTime instance.

int
currentTime()

Get the current system time as a UNIX timestamp.

string
runTimeForHumans(float $startTime, float|null $endTime = null)

Given a start time, format the total run time for human readability.

__construct(Connection $connection, string $name)

Create a new builder instance.

$this
limit(int $maxLocks)

Set the maximum number of locks that can be obtained per time window.

$this
releaseAfter(int $releaseAfter)

Set the number of seconds until the lock will be released.

$this
block(int $timeout)

Set the amount of time to block until a lock is available.

$this
sleep(int $sleep)

The number of milliseconds to wait between lock acquisition attempts.

mixed
then(callable $callback, callable|null $failure = null)

Execute the given callback if a lock is obtained, otherwise call the failure callback.

Details

protected int secondsUntil(DateTimeInterface|DateInterval|int $delay)

Get the number of seconds until the given DateTime.

Parameters

DateTimeInterface|DateInterval|int $delay

Return Value

int

protected int availableAt(DateTimeInterface|DateInterval|int $delay = 0)

Get the "available at" UNIX timestamp.

Parameters

DateTimeInterface|DateInterval|int $delay

Return Value

int

protected DateTimeInterface|int parseDateInterval(DateTimeInterface|DateInterval|int $delay)

If the given value is an interval, convert it to a DateTime instance.

Parameters

DateTimeInterface|DateInterval|int $delay

Return Value

DateTimeInterface|int

protected int currentTime()

Get the current system time as a UNIX timestamp.

Return Value

int

protected string runTimeForHumans(float $startTime, float|null $endTime = null)

Given a start time, format the total run time for human readability.

Parameters

float $startTime
float|null $endTime

Return Value

string

__construct(Connection $connection, string $name)

Create a new builder instance.

Parameters

Connection $connection
string $name

$this limit(int $maxLocks)

Set the maximum number of locks that can be obtained per time window.

Parameters

int $maxLocks

Return Value

$this

$this releaseAfter(int $releaseAfter)

Set the number of seconds until the lock will be released.

Parameters

int $releaseAfter

Return Value

$this

$this block(int $timeout)

Set the amount of time to block until a lock is available.

Parameters

int $timeout

Return Value

$this

$this sleep(int $sleep)

The number of milliseconds to wait between lock acquisition attempts.

Parameters

int $sleep

Return Value

$this

mixed then(callable $callback, callable|null $failure = null)

Execute the given callback if a lock is obtained, otherwise call the failure callback.

Parameters

callable $callback
callable|null $failure

Return Value

mixed

Exceptions

LimiterTimeoutException

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.