同校生/rate-limit

通用速率限制实现。

2.2.0 2021-01-14 09:38 UTC

README

Build Scrutinizer Code Quality Code Coverage Latest Stable Version PDS Skeleton

通用速率限制器,可用于限制某些操作的执行速率。默认实现使用 Redis 作为后端。

安装

推荐通过 Composer 安装。运行以下命令安装最新版本的软件包并将其添加到项目的 composer.json

composer require samescolas/rate-limit

用法

攻击性速率限制

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
}

静默速率限制

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

致谢

许可证

在 MIT 许可证下发布 - 有关详细信息,请参阅 许可证文件