数据库 - Model 前置说明
官方开源项目 抓取代理IP

介绍

路由限流注册,依赖\x\Limit组件。

限流注册,统一在/box/limit.php文件中。

配置

路由限流器,需要先在/config/limit.php文件中开启。
默认的配置项如下:

[
    // +-----------------------------
    // | 基于-路由限流
    // +-----------------------------
    'route' => [
        // 限流开关 true.开  false.关
        'limit_switch' => false,
        // 是否全部路由开启 true.开  false.关
        'global_switch' => false,
        // 统计器重置间隔时间【理解为每次统计的间隔时间】
        'reset_time' => 1,
        // 限流峰值
        'peak_num' => 60,
        // 启用日期,支持【年-月-日】、【时:分:秒】格式
        'start_date' => false,
        // 关闭日期,支持【年-月-日】、【时:分:秒】格式
        'end_date' => false,
        // 限流器触发回调地址
        'callback' => '\\box\\lifecycle\\limit_route_check',
    ]
]

路由限流

作用:用于注册基于路由的限流规则。
依赖类:\x\Limit
方法名:http()websocket()rpc()
返回值:对象本身

参数:

  • string|array $route

    • 功能:路由信息
    • 默认值:无

示例,以HTTP服务的路由限流为例:

use \x\Limit;
// 单条注册    
Limit::http('/test/demo')->register();
// 批量注册
Limit::http([
   '/test/demo1',
   '/test/demo2',
])->register();
// 批量注册的同时,还支持设置相关限流参数
Limit::http([
   '/test' => [
       'peak' => 20,
       'time' => 60,
   ],
   '/demo' => [
       'peak' => 10,
       'time' => 120,
   ],
])->register();

具体的限流参数字段说明,可以参考:Limit注解用法说明。

peak()

作用:设置限流峰值。
依赖类:\x\Limit
方法名:peak()
返回值:对象本身

参数:

  • int $peak

    • 功能:峰值数
    • 默认值/config/limit.php中的配置项


HTTP服务的路由限流为例:

use \x\Limit;
// 单条注册    
Limit::http('/test/demo')->peak(100)->register();
// 批量注册
Limit::http([
   '/test/demo1',
   '/test/demo2',
])->peak(100)->register();

解释:上述路由最大访问次数不能超过100次。

time()

作用:设置每次限流峰值的重置时间。
依赖类:\x\Limit
方法名:time()
返回值:对象本身

参数:

  • int $time

    • 功能:秒数
    • 默认值/config/limit.php中的配置项


HTTP服务的路由限流为例:

use \x\Limit;
// 单条注册 
Limit::http('/test/demo')->peak(100)->time(5)->register();
// 批量注册
Limit::http([
   '/test/demo1',
   '/test/demo2',
])->peak(100)->time(5)->register();

解释:上述路由5秒内,最大访问次数不能超过100次。

start()

作用:设置限流开始时间。
依赖类:\x\Limit
方法名:start()
返回值:对象本身

参数:

  • date $date

    • 功能:日期格式
    • 默认值/config/limit.php中的配置项
    • 值格式支持:[年-月-日 时:分:秒]、[年-月-日]、[月-日]、[时:分:秒]、[时:分]、[时]
    • 其他值:若不需要限制开始时间,传入false


HTTP服务的路由限流为例:

use \x\Limit;
// 单条注册 
Limit::http('/test/demo')->peak(100)->time(5)->start('10:30')->register();
// 批量注册
Limit::http([
   '/test/demo1',
   '/test/demo2',
])->peak(100)->time(5)->start('10:30')->register();

解释:上述路由每天的10:30开始,5秒内,最大访问次数不能超过100次。

end()

作用:设置限流结束时间。
依赖类:\x\Limit
方法名:end()
返回值:对象本身

参数:

  • date $date

    • 功能:日期格式
    • 默认值/config/limit.php中的配置项
    • 值格式支持:[年-月-日 时:分:秒]、[年-月-日]、[月-日]、[时:分:秒]、[时:分]、[时]
    • 其他值:若不需要限制结束时间,传入false


HTTP服务的路由限流为例:

use \x\Limit;
// 单条注册 
Limit::http('/test/demo')->peak(100)->time(5)->start('10:30')->end('22:30')->register();
// 批量注册
Limit::http([
   '/test/demo1',
   '/test/demo2',
])->peak(100)->time(5)->start('10:30')->end('22:30')->register();

解释:上述路由每天的10:30 - 22:30期间,5秒内,最大访问次数不能超过100次。

callback()

作用:设置限流达到峰值时的回调处理地址,正常情况下都不建议修改框架默认的生命周期回调地址
依赖类:\x\Limit
方法名:callback()
返回值:对象本身

参数:

  • string $callback

    • 功能:命名空间地址,处理逻辑,参考/box/lifecycle/limit_route_check.php生命周期
    • 默认值/config/limit.php中的配置项


HTTP服务的路由限流为例:

use \x\Limit;
// 单条注册 
Limit::http('/test/demo')->peak(100)->time(5)->start('10:30')->end('22:30')->callback('\\box\\lifecycle\\limit_route_check')->register();
// 批量注册
Limit::http([
   '/test/demo1',
   '/test/demo2',
])->peak(100)->time(5)->start('10:30')->end('22:30')->callback('\\box\\lifecycle\\limit_route_check')->register();

执行注册

作用:用于最终释放一条限流器注册逻辑。
依赖类:\x\Limit
方法名:register()

SW-X

企业级 - 高性能 PHP 框架

最后更新:3年前 . 作者-小黄牛

本篇目录