Download the PHP package andrewdyer/predis-request-limiter without Composer
On this page you can find all versions of the php package andrewdyer/predis-request-limiter. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download andrewdyer/predis-request-limiter
More information about andrewdyer/predis-request-limiter
Files in andrewdyer/predis-request-limiter
Package predis-request-limiter
Short Description A framework-agnostic library for managing and enforcing request rate limits, backed by Redis via Predis
License MIT
Homepage https://github.com/andrewdyer/predis-request-limiter
Informations about the package predis-request-limiter
Predis Request Limiter
A framework-agnostic library for managing and enforcing request rate limits, backed by Redis via Predis.
Introduction
This library tracks request activity against a configurable rate limit window, request threshold, and storage key, exposing a simple API to check whether the limit has been exceeded and invoke a registered handler in response. Any Predis-compatible client can be used as the backing store, making it straightforward to integrate consistent rate limiting into any application regardless of framework.
Prerequisites
- PHP: Version 8.3 or higher is required.
- Composer: Dependency management tool for PHP.
- Redis: A running Redis instance is required.
Installation
Getting Started
1. Create a Predis client
2. Create a limiter
Instantiate Limiter with a Predis client and a unique identifier. The identifier is interpolated into the storage key to namespace requests per user, IP, or endpoint:
3. Configure the rate limit
Set the maximum number of requests and the time window in seconds:
Usage
Checking and incrementing
Check whether the limit has been exceeded before incrementing the request count:
Setting a limit exceeded handler
Register a callable to invoke when the limit is exceeded:
Then invoke it when the limit is exceeded:
Customising the storage key
The default storage key template is rate:%s:requests, where %s is replaced by the identifier. Override it to namespace keys differently:
With the identifier 127.0.0.1, the resolved key becomes api:limit:127.0.0.1.
License
Licensed under the MIT licence and is free for private or commercial projects.