class Limiter

Methods

__construct(Store $store, KeyResolver $keyResolver)

Create a new limiter wrapper.

getStore()

Get the underlying rate limiter store.

consume(AdmissionPolicy $policy, UnitEnum|string|null $limiterName = null)

Atomically consume capacity from an admission policy.

array
consumeMany(array $policies, UnitEnum|string|null $limiterName = null)

Consume a group, returning decisions through the first denied policy.

block(Cooldown $cooldown, int $seconds, UnitEnum|string|null $limiterName = null)

Atomically extend a cooldown block.

inspect(AdmissionPolicy|Backoff|Cooldown $policy, UnitEnum|string|null $limiterName = null)

Inspect a policy without mutating its state.

mixed
attempt(AdmissionPolicy $policy, Closure $callback, UnitEnum|string|null $limiterName = null)

Execute a callback when the policy allows it.

recordFailure(Backoff $backoff, UnitEnum|string|null $limiterName = null)

Record a failure against a backoff policy.

bool
clear(AdmissionPolicy|Backoff|Cooldown $policy, UnitEnum|string|null $limiterName = null)

Clear the state for an identically parameterized policy.

void
validateAdmission(AdmissionPolicy $policy)

Validate admission constraints shared by every store.

int
validateFixedWindow(Limit $policy)

Validate a fixed-window policy and return its maximum state duration.

int
validateSlidingWindow(SlidingWindow $policy)

Validate a sliding-window policy and return its maximum state duration.

int
validateLeakyBucket(LeakyBucket $policy)

Validate a leaky-bucket policy and return its maximum state duration.

void
validateTimeRange(int $durationMicroseconds)

Ensure current-time arithmetic fits every first-party store.

string
resolveKey(AdmissionPolicy|Backoff|Cooldown $policy, UnitEnum|string|null $limiterName)

Resolve the physical state key for a policy.

unlimitedResult()

Create an unlimited admission result.

Details

at line 20
__construct(Store $store, KeyResolver $keyResolver)

Create a new limiter wrapper.

Parameters

Store $store
KeyResolver $keyResolver

at line 29
Store getStore()

Get the underlying rate limiter store.

Return Value

Store

at line 41
LimitResult consume(AdmissionPolicy $policy, UnitEnum|string|null $limiterName = null)

Atomically consume capacity from an admission policy.

Parameters

AdmissionPolicy $policy
UnitEnum|string|null $limiterName

Return Value

LimitResult

at line 66
array consumeMany(array $policies, UnitEnum|string|null $limiterName = null)

Consume a group, returning decisions through the first denied policy.

Groups are atomic except on Redis Cluster, where a concurrent denial during consumption may leave earlier policies charged.

Parameters

array $policies
UnitEnum|string|null $limiterName

Return Value

array

at line 105
CooldownResult block(Cooldown $cooldown, int $seconds, UnitEnum|string|null $limiterName = null)

Atomically extend a cooldown block.

Parameters

Cooldown $cooldown
int $seconds
UnitEnum|string|null $limiterName

Return Value

CooldownResult

at line 130
LimitResult|BackoffResult|CooldownResult inspect(AdmissionPolicy|Backoff|Cooldown $policy, UnitEnum|string|null $limiterName = null)

Inspect a policy without mutating its state.

Parameters

AdmissionPolicy|Backoff|Cooldown $policy
UnitEnum|string|null $limiterName

Return Value

LimitResult|BackoffResult|CooldownResult

at line 156
mixed attempt(AdmissionPolicy $policy, Closure $callback, UnitEnum|string|null $limiterName = null)

Execute a callback when the policy allows it.

Parameters

AdmissionPolicy $policy
Closure $callback
UnitEnum|string|null $limiterName

Return Value

mixed

at line 173
BackoffResult recordFailure(Backoff $backoff, UnitEnum|string|null $limiterName = null)

Record a failure against a backoff policy.

Parameters

Backoff $backoff
UnitEnum|string|null $limiterName

Return Value

BackoffResult

at line 188
bool clear(AdmissionPolicy|Backoff|Cooldown $policy, UnitEnum|string|null $limiterName = null)

Clear the state for an identically parameterized policy.

Parameters

AdmissionPolicy|Backoff|Cooldown $policy
UnitEnum|string|null $limiterName

Return Value

bool

at line 202
protected void validateAdmission(AdmissionPolicy $policy)

Validate admission constraints shared by every store.

Parameters

AdmissionPolicy $policy

Return Value

void

at line 220
protected int validateFixedWindow(Limit $policy)

Validate a fixed-window policy and return its maximum state duration.

Parameters

Limit $policy

Return Value

int

at line 234
protected int validateSlidingWindow(SlidingWindow $policy)

Validate a sliding-window policy and return its maximum state duration.

Parameters

SlidingWindow $policy

Return Value

int

at line 248
protected int validateLeakyBucket(LeakyBucket $policy)

Validate a leaky-bucket policy and return its maximum state duration.

Parameters

LeakyBucket $policy

Return Value

int

at line 265
protected void validateTimeRange(int $durationMicroseconds)

Ensure current-time arithmetic fits every first-party store.

Parameters

int $durationMicroseconds

Return Value

void

at line 282
protected string resolveKey(AdmissionPolicy|Backoff|Cooldown $policy, UnitEnum|string|null $limiterName)

Resolve the physical state key for a policy.

Parameters

AdmissionPolicy|Backoff|Cooldown $policy
UnitEnum|string|null $limiterName

Return Value

string

at line 296
protected LimitResult unlimitedResult()

Create an unlimited admission result.

Return Value

LimitResult