imiphp/imi-rate-limit
Composer 安装命令:
composer require imiphp/imi-rate-limit
包简介
imi 框架的限流组件,可以针对方法、接口设置限流,通过设置总容量、单位时间内生成填充的数量、每次扣除数量实现限流。QQ群:17916227
README 文档
README
介绍
imi-rate-limit 是 imi 框架的限流组件,基于 bandwidth-throttle/token-bucket 开发。
本组件仅支持使用 Redis 作为中间件,可以针对方法、接口设置限流,通过设置总容量、单位时间内生成填充的数量、每次扣除数量实现限流。
本仓库仅用于浏览,不接受 issue 和 Pull Requests,请前往:https://github.com/imiphp/imi
Composer
本项目可以使用composer安装,遵循psr-4自动加载规则,在你的 composer.json 中加入下面的内容:
{
"require": {
"imiphp/imi-rate-limit": "~2.0.0"
}
}
然后执行 composer update 安装。
使用
在项目 config/config.php 中配置:
[
'components' => [
// 引入本组件
'RateLimit' => 'Imi\RateLimit',
],
'pools' => [
// 一定得要配置 Redis 连接池才可以用
],
'redis' => [
'defaultPool' => 'redis连接池名称',
],
]
使用:
/** * 限制每秒同时访问 3 次 * * @Action * * @RateLimit(name="test1", capacity=3) * * @return void */ public function test1() { return [ 'data' => 'test1', ]; } /** * 限制每秒同时访问 1 次,等待解除限制后继续执行,超时时间为 1 秒 * * @Action * * @RateLimit(name="test2", capacity=1) * @BlockingConsumer(1) * * @return void */ public function test2() { return [ 'data' => 'test2', ]; } /** * 总容量为 1000,每毫秒填充 1,每次调用扣除 500 * * 自定义处理限制 * * @Action * * @RateLimit(name="test3", capacity=1000, fill=1, unit="millisecond", deduct=500, callback="\ImiDemo\HttpDemo\Util\RateLimitParser::parse") * * @return void */ public function test3() { return [ 'data' => 'test3', ]; } /** * 手动调用限流 * * 总容量为 1000,每毫秒填充 1,每次调用扣除 500 * * @Action * * @return void */ public function test4() { if(true !== $result = RateLimiter::limit('test4', 1000, function(){ // 自定义回调中的返回值,会作为原方法的返回值被返回 return [ 'message' => '自定义触发限流返回内容', ]; }, 1, 'millisecond', 500)) { return $result; } return [ 'data' => 'test4', ]; } /** * 手动调用限流 * * 限制每秒同时访问 1 次,等待解除限制后继续执行,超时时间为 1 秒 * * @Action * * @return void */ public function test5() { if(true !== $result = RateLimiter::limitBlock('test5', 1, function(){ // 自定义回调中的返回值,会作为原方法的返回值被返回 return [ 'message' => '自定义触发限流返回内容', ]; }, 1, 1, 'second', 1)) { return $result; } return [ 'data' => 'test5', ]; }
免费技术支持
运行环境
版权信息
imi-rate-limit 遵循 MIT 开源协议发布,并提供免费使用。
捐赠
开源不求盈利,多少都是心意,生活不易,随缘随缘……
imiphp/imi-rate-limit 适用场景与选型建议
imiphp/imi-rate-limit 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.39k 次下载、GitHub Stars 达 8, 最近一次更新时间为 2019 年 01 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 imiphp/imi-rate-limit 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 imiphp/imi-rate-limit 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 1.39k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 9
- 点击次数: 1
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MulanPSL-2.0
- 更新时间: 2019-01-04
