beyondcode/laravel-sliding-window-limiter

此包已弃用,不再维护。未建议替代包。

Laravel和Redis的滑动窗口速率限制

1.1.1 2019-09-23 13:28 UTC

This package is auto-updated.

Last update: 2024-01-23 22:37:49 UTC


README

Latest Version on Packagist Build Status Quality Score Total Downloads

此包允许您轻松创建和验证使用滑动窗口算法(以内存高效的方式)的速率限制。

此包利用了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)。请参阅许可文件获取更多信息。