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

介绍

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

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

配置

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

[
    // +-----------------------------
    // | 基于-IP限流
    // +-----------------------------
    'ip' => [
        // 限流开关 true.开  false.关
        'limit_switch' => false,
        // 统计器重置间隔时间【理解为每次统计的间隔时间】
        'reset_time' => (86400*7),
        // 限流峰值
        'peak_num' => 1000,
        // 启用日期,支持【年-月-日】、【时:分:秒】格式
        'start_date' => false,
        // 关闭日期,支持【年-月-日】、【时:分:秒】格式
        'end_date' => false,
        // 限流器触发回调地址
        'callback' => '\\box\\lifecycle\\limit_ip_check',
    ]
]

IP限流

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

参数:

  • string|array $route

    • 功能:IP信息
    • 默认值:无

示例:

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

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

peak()

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

参数:

  • int $peak

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


例如:

use \x\Limit;
// 单条注册    
Limit::ip('45.17.198.32')->peak(100)->register();
// 批量注册
Limit::ip([
   '45.17.198.32',
   '133.17.198.32',
])->peak(100)->register();

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

time()

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

参数:

  • int $time

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


例如:

use \x\Limit;
// 单条注册 
Limit::ip('45.17.198.32')->peak(100)->time(5)->register();
// 批量注册
Limit::ip([
   '45.17.198.32',
   '133.17.198.32',
])->peak(100)->time(5)->register();

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

start()

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

参数:

  • date $date

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


例如:

use \x\Limit;
// 单条注册 
Limit::ip('45.17.198.32')->peak(100)->time(5)->start('10:30')->register();
// 批量注册
Limit::ip([
   '45.17.198.32',
   '133.17.198.32',
])->peak(100)->time(5)->start('10:30')->register();

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

end()

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

参数:

  • date $date

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


例如:

use \x\Limit;
// 单条注册 
Limit::ip('45.17.198.32')->peak(100)->time(5)->start('10:30')->end('22:30')->register();
// 批量注册
Limit::ip([
   '45.17.198.32',
   '133.17.198.32',
])->peak(100)->time(5)->start('10:30')->end('22:30')->register();

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

callback()

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

参数:

  • string $callback

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


例如:

use \x\Limit;
// 单条注册 
Limit::ip('45.17.198.32')->peak(100)->time(5)->start('10:30')->end('22:30')->callback('\\box\\lifecycle\\limit_ip_check')->register();
// 批量注册
Limit::ip([
   '45.17.198.32',
   '133.17.198.32',
])->peak(100)->time(5)->start('10:30')->end('22:30')->callback('\\box\\lifecycle\\limit_ip_check')->register();

执行注册

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

SW-X

企业级 - 高性能 PHP 框架

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

本篇目录