Download the PHP package sunspikes/php-ratelimiter without Composer
On this page you can find all versions of the php package sunspikes/php-ratelimiter. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download sunspikes/php-ratelimiter
More information about sunspikes/php-ratelimiter
Files in sunspikes/php-ratelimiter
Package php-ratelimiter
Short Description A framework agnostic rate limiter for PHP
License MIT
Rated 1.00 based on 1 reviews
Informations about the package php-ratelimiter
PHP Ratelimiter
A framework independent, flexible and highly extensible rate limiter for PHP.
Requirements
- PHP 8.0 or higher
- desarrolla2/cache ^3.0
Installation
Usage
Overview
Configuration
By default PHP Ratelimiter uses the desarrolla2 cache adapter, with sample configuration in config/config.php.
You can configure the drivers in config.php, for example to use memcached change the driver to 'memcache':
Supported drivers: memory, file, apc/apcu, memcache, redis, mysql/mysqli, mongo/mongodb, notcache.
Extending
Custom Cache Adapters
You can use any cache backend by implementing Sunspikes\Ratelimit\Cache\Adapter\CacheAdapterInterface:
Custom Hydrators
You can have custom hydrators by implementing Sunspikes\Ratelimit\Throttle\Hydrator\DataHydratorInterface.
For example to use a Symfony Request object for rate limiting:
Then decorate or extend the HydratorFactory to recognize your data:
Throttler Types
Elastic Window
An elastic window throttler will allow X requests in Y seconds. Any further access attempts will be counted, but return false as status. The window is extended with Y seconds on every hit, so there must be no hits during Y seconds for the counter to reset to 0.
See Overview example for instantiation.
Time-based Throttlers
The following throttlers use time functions, requiring a different factory for construction:
Fixed Window
Allows X requests in the Y seconds since the first request. The window does not extend.
Moving Window
Allows X requests during the previous Y seconds. The window is never extended beyond Y seconds.
Leaky Bucket
A leaky bucket throttler allows X requests divided over time Y.
Any access attempts past threshold T (default: 0) will be delayed by Y / (X - T).
access() returns false if delayed, hit() returns the number of milliseconds waited.
Note: Time limit for this throttler is in milliseconds, where it is seconds for other throttler types.
Retrial Queue
Wraps another throttler. When a hit would fail on the internal throttler, the request is delayed until the internal throttler has capacity again.
Author
Krishnaprasad MG [@sunspikes]
Contributing
Please feel free to send pull requests.
License
This is open-sourced software licensed under the MIT license.