beyondcode / laravel-sliding-window-limiter
此包已弃用,不再维护。未建议替代包。
Laravel和Redis的滑动窗口速率限制
1.1.1
2019-09-23 13:28 UTC
Requires
- php: ^7.3
- illuminate/redis: 5.8.*|^6.0
- illuminate/support: 5.8.*|^6.0
- nesbot/carbon: ^2.23.0
- predis/predis: ^1.1
Requires (Dev)
- orchestra/testbench: ^3.8|^4.0
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-01-23 22:37:49 UTC
README
此包允许您轻松创建和验证使用滑动窗口算法(以内存高效的方式)的速率限制。
此包利用了Redis的原子请求。
安装
您可以通过composer安装此包
composer require beyondcode/laravel-sliding-window-limiter
用法
您可以通过调用create
方法创建一个新的限制器实例,并传入一个表示限制器时间窗口的CarbonInterval。第二个参数是在该给定时间框架内限制器将接受的最大请求数或尝试次数。
$limiter = SlidingWindowLimiter::create(CarbonInterval::hour(1), 100);
指定自定义间隔
默认情况下,所有对限制器的尝试都将分组到最近的分钟。如果您需要更细粒度的间隔控制,您可以将它指定为第三个参数
$limiter = SlidingWindowLimiter::create(CarbonInterval::minute(1), 100, CarbonInterval::second());
运行尝试限制器
一旦创建了限制器,您可以通过对它进行尝试来查看调用是否在您指定的使用限制内。由于限制器可以用于多个资源,您需要在attempt
方法调用中传递您想要尝试调用的资源。
$limiter->attempt('user_1');
获取使用计数
当您想读取给定资源尝试的次数时,您可以调用getUsage
方法。
注意:此方法不会返回尝试次数,而只返回成功的尝试次数。
$count = $limiter->getUsage('user_1');
重置限制器
如果您想重置特定资源的尝试次数,您可以在限制器实例上调用reset
方法。这将重置TTL到给定的时间框架并重新允许新的尝试。
$limiter->reset('user_1');
测试
composer test
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全性
如果您发现任何与安全相关的问题,请通过电子邮件marcel@beyondco.de联系,而不是使用问题跟踪器。
鸣谢
许可
MIT 许可证 (MIT)。请参阅许可文件获取更多信息。