antikirra / rate-limiter
There is no license information available for the latest version (0.0.2) of this package.
0.0.2
2024-02-06 10:00 UTC
Requires
- php: ^7.4 || ^8.0
- ext-redis: *
- antikirra/probability: ^2.0.0
README
Install
composer require antikirra/rate-limiter
Basic usage
<?php use Antikirra\RateLimiter; require __DIR__ . '/vendor/autoload.php'; $redis = new Redis(); $redis->connect('127.0.0.1'); // maximum of three requests per minute $limiter = new RateLimiter($redis, "signin_by_ip{$_SERVER['REMOTE_ADDR']}", 3, 60, 0.75); $result = $limiter->check(); // returns the actual counter value without any side effects echo $result->getCount(); // (int) actual counter value print_r($result->isPassed()); // (bool) true - it's okay, false - flood has been detected!!! $result = $limiter->hit(); // increments the counter value, returning the result of the check echo $result->getCount(); // (int) updated counter value print_r($result->isPassed()); // (bool) true - it's okay, false - flood has been detected!!! print_r($result->isFailed()); // (bool) true - flood has been detected!!!, false - it's okay $limiter->reset(); // (void) resets counters to zero