illusorium / kthrottler
Kthrottler Kohana 模块作为 composer 包
Requires
- kohana/database: ^3
This package is auto-updated.
Last update: 2024-09-06 18:52:42 UTC
README
KThrottler
还有一个 Ruby 版本(适用于 Rails),请参阅此处:http://github.com/fredwu/action_throttler
简介
KThrottler 是一个易于使用的 Kohana 模块,可以快速根据可配置的持续时间和限制来限制应用程序操作。
由 Wuit 提供。
功能
- 易于使用,易于配置
- 轻量级
- 支持 Kohana v3
先决条件
- Kohana 内置的 DB 模块
使用方法
下载并安装模块
git clone git://github.com/fredwu/kthrottler.git
启用模块
在您的引导文件(application/bootstrap.php
)中,启用 KThrottler 如下所示
Kohana::modules(array(
'database' => MODPATH.'database',
'kthrottler' => MODPATH.'kthrottler',
));
设置数据库表
导入提供的 kthrottler_logs_db.sql
文件。
配置操作
配置文件位于 config/kthrottler.php
。请将其复制到您的 application/config
文件夹。
配置数组看起来像这样
return array
(
'mail' => array
(
'duration' => '1 hour',
'limit' => 10,
),
);
您可以添加任意多的配置元素,只需确保正确标记它们(即,如示例中的 mail
)。
在示例中,我们将 mail
操作设置为在 1 小时内最多执行 10 次。
在您的应用程序中注册操作
现在我们需要注册操作,以便它们被记录在数据库中。
要简单地运行一个操作,在您的应用程序中(可能在控制器中),执行以下操作
KThrottler::actions()->run('mail');
KThrottler::actions()->run()
将根据操作是否被限制返回 true 或 false。
KThrottler::actions()->run()
有别名 KThrottler::actions()->can_run()
和负别名 KThrottler::actions()->cannot_run()
。
通常,我们希望在操作被限制时向用户提供反馈,您可以通过以下方式做到这一点
if (`KThrottler::actions()->cannot_run('mail')`)
// tell the user that this action is not performed
end
KThrottler::actions()->run()
也接受一个可选的引用参数
KThrottler::actions()->run('mail', $current_user)
引用参数非常有用,因为我们可以根据引用跟踪和限制操作,例如用户。该参数接受一个字符串、一个整数或一个 ORM 对象。
请注意,KThrottler::actions()->run()
和其别名在可能的情况下会执行操作。如果您只想检查操作是否可以执行,您可以这样做
`KThrottler::actions()->can_be_run('mail', $current_user)`
KThrottler::actions()->can_be_run()
在不执行操作的情况下返回 true 或 false,它也有一个负别名,KThrottler::actions()->cannot_be_run()
。
作者
版权所有(c)2010 Fred Wu (http://fredwu.me) 和 Wuit,MIT 许可证发布