class LeakyBucket extends AdmissionPolicy

Constants

MAX_INTEGER

The largest integer represented exactly by every first-party store.

Methods

__construct(int $rate, int $periodMicroseconds, int $burst, string $key = '', int $cost = 1, bool $global = false, Closure|null $afterCallback = null, Closure|null $responseCallback = null)

Create a new leaky-bucket limit.

by(Stringable|UnitEnum|string|int|null $key)

Set the key of the rate limit.

cost(int $cost)

Set the capacity consumed by each operation.

globally(bool $global = true)

Apply the policy without a named limiter scope.

after(callable $callback)

Set the callback that determines whether the operation should be consumed.

response(callable $callback)

Set the callback that generates a response when the limit is exceeded.

newInstance(string $key, int $cost, bool $global, Closure|null $afterCallback, Closure|null $responseCallback)

Create a copy with the given shared policy values.

string
normalizeKey(Stringable|UnitEnum|string|int|null $key)

Convert a caller key to its canonical string value.

static void
ensurePositive(string $name, int $value)

Validate a positive shared integer.

static int
multiply(int $value, int $multiplier, string $name)

Multiply positive rate limit values without losing integer precision.

static LeakyBucket
perSecond(int $rate, int $periodSeconds = 1)

Create a new per-second leaky-bucket limit.

static LeakyBucket
perMinute(int $rate, int $periodMinutes = 1)

Create a new per-minute leaky-bucket limit.

static LeakyBucket
perMinutes(int $periodMinutes, int $rate)

Create a new leaky-bucket limit using minutes as the period.

static LeakyBucket
perHour(int $rate, int $periodHours = 1)

Create a new per-hour leaky-bucket limit.

static LeakyBucket
perDay(int $rate, int $periodDays = 1)

Create a new per-day leaky-bucket limit.

burst(int $capacity)

Set the immediately available capacity.

Details

at line 15
__construct(int $rate, int $periodMicroseconds, int $burst, string $key = '', int $cost = 1, bool $global = false, Closure|null $afterCallback = null, Closure|null $responseCallback = null)

Create a new leaky-bucket limit.

Parameters

int $rate
int $periodMicroseconds
int $burst
string $key
int $cost
bool $global
Closure|null $afterCallback
Closure|null $responseCallback

in AdmissionPolicy at line 37
AdmissionPolicy by(Stringable|UnitEnum|string|int|null $key)

Set the key of the rate limit.

Parameters

Stringable|UnitEnum|string|int|null $key

Return Value

AdmissionPolicy

in AdmissionPolicy at line 51
AdmissionPolicy cost(int $cost)

Set the capacity consumed by each operation.

Parameters

int $cost

Return Value

AdmissionPolicy

in AdmissionPolicy at line 70
AdmissionPolicy globally(bool $global = true)

Apply the policy without a named limiter scope.

Parameters

bool $global

Return Value

AdmissionPolicy

in AdmissionPolicy at line 84
AdmissionPolicy after(callable $callback)

Set the callback that determines whether the operation should be consumed.

Parameters

callable $callback

Return Value

AdmissionPolicy

in AdmissionPolicy at line 98
AdmissionPolicy response(callable $callback)

Set the callback that generates a response when the limit is exceeded.

Parameters

callable $callback

Return Value

AdmissionPolicy

at line 125
protected AdmissionPolicy newInstance(string $key, int $cost, bool $global, Closure|null $afterCallback, Closure|null $responseCallback)

Create a copy with the given shared policy values.

Parameters

string $key
int $cost
bool $global
Closure|null $afterCallback
Closure|null $responseCallback

Return Value

AdmissionPolicy

in AdmissionPolicy at line 123
protected string normalizeKey(Stringable|UnitEnum|string|int|null $key)

Convert a caller key to its canonical string value.

Parameters

Stringable|UnitEnum|string|int|null $key

Return Value

string

in AdmissionPolicy at line 135
static protected void ensurePositive(string $name, int $value)

Validate a positive shared integer.

Parameters

string $name
int $value

Return Value

void

in AdmissionPolicy at line 149
static protected int multiply(int $value, int $multiplier, string $name)

Multiply positive rate limit values without losing integer precision.

Parameters

int $value
int $multiplier
string $name

Return Value

int

at line 50
static LeakyBucket perSecond(int $rate, int $periodSeconds = 1)

Create a new per-second leaky-bucket limit.

Parameters

int $rate
int $periodSeconds

Return Value

LeakyBucket

at line 62
static LeakyBucket perMinute(int $rate, int $periodMinutes = 1)

Create a new per-minute leaky-bucket limit.

Parameters

int $rate
int $periodMinutes

Return Value

LeakyBucket

at line 74
static LeakyBucket perMinutes(int $periodMinutes, int $rate)

Create a new leaky-bucket limit using minutes as the period.

Parameters

int $periodMinutes
int $rate

Return Value

LeakyBucket

at line 82
static LeakyBucket perHour(int $rate, int $periodHours = 1)

Create a new per-hour leaky-bucket limit.

Parameters

int $rate
int $periodHours

Return Value

LeakyBucket

at line 94
static LeakyBucket perDay(int $rate, int $periodDays = 1)

Create a new per-day leaky-bucket limit.

Parameters

int $rate
int $periodDays

Return Value

LeakyBucket

at line 106
LeakyBucket burst(int $capacity)

Set the immediately available capacity.

Parameters

int $capacity

Return Value

LeakyBucket