Download the PHP package franzip/throttler without Composer
On this page you can find all versions of the php package franzip/throttler. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package throttler
Throttler
A simple, general purpose, rate limiter and usage tracker library.
Installing via Composer (recommended)
Install composer in your project:
Create a composer.json file in your project root:
Install via composer
Description
Once instantiated, the object must always be explicitly activated with the provided
start()
method.
Basically, you set a timeframe (it can be 24 hours, 2 seconds, 30 minutes, etc.), a global limit and the things you want to keep track of, and you're ready to go.
You can also set an additional limit that will applied as limit to each single component you are tracking.
You can change the given parameters only after you stop the current instance from
tracking with the provided stop()
method.
The Throttler
will detect when a given timeframe is expired: all its internal
states will be reset and a new timeframe will be computed.
If your code need to access any Throttler
attributes, just use the provided
getters (getName, getGlobalThreshold, etc.). See the constructor.
Constructor
Allowed $metric
- 'sec': Compute the timeframe in (seconds * $metricFactor)
- 'min': Compute the timeframe in (minutes * $metricFactor)
- 'hrs': Compute the timeframe in (hours * $metricFactor)
Basic Usage (default arguments)
Example 1: using Throttler
to cap incoming requests.
The total amount of requests will be capped to 30 per hour.
Usage (custom arguments)
Example 2: using Throttler
to cap incoming requests.
The total amount of requests will be capped to 100 per day.
The amount of incoming requests from each address will be capped to 10 per day.
isActive()
Return whether tracking is turned on.
reset()
You can revert a Throttler
object status to when it was instantiated.
Just use the reset()
method at anytime.
TODOs
- [x] A decent exceptions system.
- [x] Move validation to external class.
- [x] Allow bulk components adding.
- [ ] Refactoring messy tests.
- [ ] Refactoring update-checking methods.
License
MIT Public License.