RateLimiter
class RateLimiter
Traits
Properties
| protected Repository | $cache | The cache store implementation. |
|
| protected array | $limiters | The configured limit object resolvers. |
|
| protected Closure|null | $keyScopeResolver | The callback used to resolve the scope for named limiter keys. |
Methods
Get the number of seconds until the given DateTime.
Get the "available at" UNIX timestamp.
If the given value is an interval, convert it to a DateTime instance.
Given a start time, format the total run time for human readability.
Resolve the storage key for a named rate limit.
Attempt to execute a callback if it's not limited.
Determine if the given key has been "accessed" too many times.
Increment (by 1) the counter for a given key for a given decay time.
Increment the counter for a given key for a given decay time by a given amount.
Decrement the counter for a given key for a given decay time by a given amount.
Get the number of attempts for the given key.
Reset the number of attempts for the given key.
Get the number of retries left for the given key.
Get the number of retries left for the given key.
Clear the hits and lockout timer for the given key.
Get the number of seconds until the "key" is accessible again.
Clean the rate limiter key from unicode characters.
Execute the given callback without serialization or compression when applicable.
Details
in
InteractsWithTime at line 17
protected int
secondsUntil(DateInterval|DateTimeInterface|int $delay)
Get the number of seconds until the given DateTime.
in
InteractsWithTime at line 29
protected int
availableAt(DateInterval|DateTimeInterface|int|null $delay = 0)
Get the "available at" UNIX timestamp.
in
InteractsWithTime at line 41
protected DateTimeInterface|int
parseDateInterval(DateInterval|DateTimeInterface|int|null $delay)
If the given value is an interval, convert it to a DateTime instance.
in
InteractsWithTime at line 57
protected int
currentTime()
Get the current system time as a UNIX timestamp.
in
InteractsWithTime at line 65
protected string
runTimeForHumans(float $startTime, float|null $endTime = null)
Given a start time, format the total run time for human readability.
at line 41
__construct(Repository $cache)
Create a new rate limiter instance.
at line 53
RateLimiter
for(UnitEnum|string $name, Closure $callback)
Register a named limiter configuration.
Boot-only. The callback persists on the singleton rate limiter for the worker lifetime and applies to every subsequent limiter() lookup; per-request use races across coroutines.
at line 68
void
resolveKeyScopeUsing(Closure|null $resolver)
Register the named limiter key scope resolver.
Boot-only. The callback persists on the singleton rate limiter for the worker lifetime and applies to subsequent named limits across coroutines.
at line 76
Closure|null
limiter(UnitEnum|string $name)
Get the given named rate limiter.
at line 112
string
resolveNamedLimiterKey(string $limiterName, Limit $limit, bool $shouldHashKeys = true)
Resolve the storage key for a named rate limit.
at line 135
mixed
attempt(string $key, int $maxAttempts, Closure $callback, DateInterval|DateTimeInterface|int $decaySeconds = 60)
Attempt to execute a callback if it's not limited.
at line 153
bool
tooManyAttempts(string $key, int $maxAttempts)
Determine if the given key has been "accessed" too many times.
at line 169
int
hit(string $key, DateInterval|DateTimeInterface|int $decaySeconds = 60)
Increment (by 1) the counter for a given key for a given decay time.
at line 177
int
increment(string $key, DateInterval|DateTimeInterface|int $decaySeconds = 60, int $amount = 1)
Increment the counter for a given key for a given decay time by a given amount.
at line 205
int
decrement(string $key, DateInterval|DateTimeInterface|int $decaySeconds = 60, int $amount = 1)
Decrement the counter for a given key for a given decay time by a given amount.
at line 213
mixed
attempts(string $key)
Get the number of attempts for the given key.
at line 223
bool
resetAttempts(string $key)
Reset the number of attempts for the given key.
at line 233
int
remaining(string $key, int $maxAttempts)
Get the number of retries left for the given key.
at line 245
int
retriesLeft(string $key, int $maxAttempts)
Get the number of retries left for the given key.
at line 253
void
clear(string $key)
Clear the hits and lockout timer for the given key.
at line 265
int
availableIn(string $key)
Get the number of seconds until the "key" is accessible again.
at line 275
string
cleanRateLimiterKey(string $key)
Clean the rate limiter key from unicode characters.
at line 283
protected mixed
withoutSerializationOrCompression(callable $callback)
Execute the given callback without serialization or compression when applicable.