Download the PHP package recranet/guzzle-rate-limiter-middleware without Composer
On this page you can find all versions of the php package recranet/guzzle-rate-limiter-middleware. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download recranet/guzzle-rate-limiter-middleware
More information about recranet/guzzle-rate-limiter-middleware
Files in recranet/guzzle-rate-limiter-middleware
Package guzzle-rate-limiter-middleware
Short Description Thread-safe Guzzle rate limiter middleware using Symfony RateLimiter
License MIT
Informations about the package guzzle-rate-limiter-middleware
Guzzle Rate Limiter Middleware
A thread-safe rate limiter middleware for Guzzle using Symfony RateLimiter with atomic locks.
Features
- Thread-safe rate limiting using distributed locks
- Multiple rate limiting strategies: sliding window and token bucket
- Configurable handlers for rate limit exceeded scenarios
- Works across multiple processes and servers
Why This Package?
Unlike simple in-memory rate limiters, this package uses Symfony's Lock component to provide atomic rate limit checks. This prevents race conditions when multiple workers or processes check limits simultaneously, making it safe for use in distributed systems, queue workers, and multi-threaded applications.
Installation
Usage
Basic Usage
Factory Methods
The middleware provides several factory methods for common rate limiting scenarios:
Token Bucket
For APIs that allow bursting, use the token bucket strategy:
Handlers
When the rate limit is exceeded, a handler determines what happens next.
SleepHandler (Default)
Blocks the process until the rate limit window resets, then retries automatically:
ThrowExceptionHandler
Throws a RateLimitException for the calling code to handle:
This is useful for message queue systems where you want to requeue the job with a delay rather than blocking the worker.
Custom Handler
Implement RateLimitExceededHandler to create your own handler:
Cache Backends
Any PSR-6 cache implementation works. Here are some common options:
Redis (Recommended for distributed systems)
Filesystem (Single server)
APCu (Single server, high performance)
Testing
Changelog
Please see CHANGELOG for more information on what has changed recently.
License
The MIT License (MIT). Please see License File for more information.
All versions of guzzle-rate-limiter-middleware with dependencies
guzzlehttp/guzzle Version ^7.0
psr/cache Version ^3.0
symfony/rate-limiter Version ^6.4 || ^7.0
symfony/lock Version ^6.4 || ^7.0