Class FixedWindowRateLimiter
Fixed window rate limiter implementation
Namespace: Cake\Http\RateLimit
Property Summary
-
$cache protected
Psr\SimpleCache\CacheInterfaceCache instance
Method Summary
-
__construct() public
Constructor
-
attempt() public
Attempt to consume from the rate limit
-
reset() public
Reset rate limit for an identifier
Method Detail
__construct() ¶ public
__construct(Psr\SimpleCache\CacheInterface $cache)
Constructor
Parameters
-
Psr\SimpleCache\CacheInterface$cache Cache instance
attempt() ¶ public
attempt(string $identifier, int $limit, int $window, int $cost = 1): array{allowed: bool, limit: int, remaining: int, reset: int}
Attempt to consume from the rate limit
Parameters
-
string$identifier -
int$limit -
int$window -
int$cost optional
Returns
array{allowed: bool, limit: int, remaining: int, reset: int}reset() ¶ public
reset(string $identifier): void
Reset rate limit for an identifier
Clears all rate limiting data for the specified identifier, allowing fresh requests to be made. This is useful for testing or when you need to manually reset limits for specific users/IPs.
Note: The identifier should be the same format as used in attempt(), typically a cache key that includes the 'ratelimit' prefix and hashed value.
Example usage:
$cache = Cache::pool('default');
$limiter = new SlidingWindowRateLimiter($cache);
$key = 'rate_limit_' . hash('xxh3', '192.168.1.1');
$limiter->reset($key);
Parameters
-
string$identifier
Returns
void