定制 imiphp/imi-rate-limit 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

imiphp/imi-rate-limit

Composer 安装命令:

composer require imiphp/imi-rate-limit

包简介

imi 框架的限流组件,可以针对方法、接口设置限流,通过设置总容量、单位时间内生成填充的数量、每次扣除数量实现限流。QQ群:17916227

README 文档

README

Latest Version Php Version Swoole Version IMI License

介绍

imi-rate-limitimi 框架的限流组件,基于 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',
    ];
}

免费技术支持

QQ群:17916227 点击加群,如有问题会有人解答和修复。

运行环境

版权信息

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 我们能提供哪些服务?
定制开发 / 二次开发

基于 imiphp/imi-rate-limit 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 1.39k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 9
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 8
  • Watchers: 1
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: MulanPSL-2.0
  • 更新时间: 2019-01-04