同校生 / rate-limit
通用速率限制实现。
2.2.0
2021-01-14 09:38 UTC
Requires
- php: ^7.2 || ^8.0
- beberlei/assert: ^3.2
Requires (Dev)
- ext-apcu: >=5.1.12
- ext-redis: *
- friendsofphp/php-cs-fixer: ^2.17
- phpstan/phpstan: ^0.12.10
- phpstan/phpstan-beberlei-assert: ^0.12.2
- phpstan/phpstan-phpunit: ^0.12.6
- phpunit/phpunit: ^8.0
- predis/predis: ^1.1
Suggests
- ext-apcu: In order to use ApcuRateLimiter
- ext-memcached: In order to use MemcachedRateLimiter
- ext-redis: In order to use RedisRateLimiter
- predis/predis: In order to use PredisRateLimiter
This package is not auto-updated.
Last update: 2024-09-25 11:52:26 UTC
README
通用速率限制器,可用于限制某些操作的执行速率。默认实现使用 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 许可证下发布 - 有关详细信息,请参阅 许可证文件