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.
Installation
With Composer
It is best installed it through packagist
by including sunspikes/php-ratelimiter
in your project composer.json require:
Without Composer
You can also download it from Github, but no autoloader is provided so you'll need to register it with your own PSR-4 compatible autoloader.
Usage
Overview
Configuration
By default PHP Ratelimiter uses the desarolla2 cache adapter, the sample configuration provided in
You can configure the drivers in , for example to use memcache change the driver to
Extending
The PHP Ratelimiter is highly extensible, you can have custom adapters by implementing
For example to use Doctrine cache adapter
Also you can have custom hydrators by implementing
For example to use a Symfony Request object instead of custom URL for ratelimiting
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. Note that the window will be extended with Y seconds on every hit. This means there need to be no hits during Y seconds for the counter to be reset to 0.
See Overview example for instantiation.
Time-based throttlers
All the following throttlers use time functions, thus needing a different factory for construction:
Fixed Window
A fixed window throttler will allow X requests in the Y seconds since the first request. Any further access attempts will be counted, but return false as status. The window will not be extended at all.
Moving Window
A moving window throttler will allow X requests during the previous Y seconds. Any further access attempts will be counted, but return false as status. The window is never extended beyond Y seconds.
Leaky Bucket
A leaky bucket throttler will allow X requests divided over time Y.
Any access attempts past the threshold T (default: 0) will be delayed by Y / (X - T)
access()
will return false if delayed, hit()
will return the number of milliseconds waited
Note: Time limit for this throttler is in milliseconds, where it is seconds for the other throttler types!
Retrial Queue
The retrial queue encapsulates another throttler. When this throttler receives a hit which 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 an open-sourced software licensed under the MIT license.