nhphero/throttle

A Simple PHP package for throttling and rate limiting

1.0.4 2020-11-18 10:09 UTC

This package is auto-updated.

Last update: 2024-05-18 17:17:09 UTC


README

This is yet another Throttling library for PHP applications, that provides a throttling interface and a flexible API for implementing custom throttling algorithms (aka providers) and storage strategies.

Installation

$ composer require nhphero/throttle

Basic Usage

<?php

$storage = new NhpHero\Throttle\Store\RedisStore( 'throttle_storage_prefix::',[
            'scheme' => config('redis.scheme'),
            'host' => config('redis.host'),
            'port' => config('redis.port'),
            'password' => config('redis.password'),
            'timeout' => config('redis.timeout'),
        ]);
$throttle = new NhpHero\Throttle\Throttle($storage);
//Limit 10 request per 60 seconds
$limit = 10;
$time= 60;
$throttleKey = $_SERVER['REMOTE_ADDR'];
if ($throttle->attempt($throttleKey, $limit, $time)) {
    // allow
} else {
    // deny
}

Storage Strategies

Currently, only Redis storage .

Development and Tests

Feel free to contribute with bug fixing, new providers and storage strategies.

To start contributing, just make a fork of this repo, create a branch which the name explains what you are doing, code your solution and send us a Pull Request.

Development Installation

$ composer install --dev

Running the Tests

$ ./vendor/bin/phpunit

Documentation

Coming soon.

License

This library is licensed under the MIT license.