路由限流注册,依赖\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注解用法说明。
作用:设置限流峰值。
依赖类:\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
次。
作用:设置每次限流峰值的重置时间。
依赖类:\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
次。
作用:设置限流开始时间。
依赖类:\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
次。
作用:设置限流结束时间。
依赖类:\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
次。
作用:设置限流达到峰值时的回调处理地址,正常情况下都不建议修改框架默认的生命周期回调地址。
依赖类:\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()