rate-limit

by nikolaposa

nikolaposa / rate-limit

🚔 General purpose rate limiter implementation.

162 Stars 22 Forks Last release: 4 months ago (2.1.0) MIT License 142 Commits 8 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Rate Limit

Build Status Build Scrutinizer Code Quality Code Coverage Latest Stable Version PDS Skeleton

General purpose rate limiter that can be used to limit the rate at which certain operation can be performed. Default implementation uses Redis as backend.

Installation

The preferred method of installation is via Composer. Run the following command to install the latest version of a package and add it to your project's

composer.json
:
composer require nikolaposa/rate-limit

Usage

Offensive rate limiting

use RateLimit\Exception\LimitExceeded;
use RateLimit\Rate;
use RateLimit\RedisRateLimiter;
use Redis;

$rateLimiter = new RedisRateLimiter(new Redis());

$apiKey = 'abc123';

try { $rateLimiter->limit($apiKey, Rate::perMinute(100));

//on success

} catch (LimitExceeded $exception) { //on limit exceeded }

Silent rate limiting

use RateLimit\Rate;
use RateLimit\RedisRateLimiter;
use Redis;

$rateLimiter = new RedisRateLimiter(new Redis());

$ipAddress = '192.168.1.2'; $status = $rateLimiter->limitSilently($ipAddress, Rate::perMinute(100));

echo $status->getRemainingAttempts(); //99

Credits

License

Released under MIT License - see the License File for details.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.