Tp5 限流操作

访问限制操作一分钟3次访问,用中间件进行实现
    public function handle($request, \Closure $next)
    {
        // 获取IP地址 服务器访问时间戳
        $ip = $_SERVER['REMOTE_ADDR'];
        $times = $_SERVER['REQUEST_TIME_FLOAT'];
        // 进来先获取,获取不到进行创建
        $data = [
            'ip' => $ip,
            'first_time' => $times,
            'second_time' => 0,
        ];
        $exit_ip = Cache::get($ip);
        if (!$exit_ip) {
            Cache::set($ip, $data);
            return $next($request);
        }
        if ($exit_ip) {
            $second_time = $exit_ip['second_time'];
            if ($second_time) {
                $age = $times - $exit_ip['first_time'];
                if ($age < 60) {
                	// 自己定义的异常类,采用json形式返回给客户端
                    throw new TimeOutException();
                }
                if ($age > 60) {
                    $data = [
                        'ip' => $ip,
                        'first_time' => $times,
                        'second_time' => 0
                    ];
                    Cache::set($ip, $data);
                    return $next($request);
                }
            } else {
                $data = Cache::get($ip);
                $data['second_time'] = $times;
                Cache::set($ip, $data);
                return $next($request);
            }
        }
    }
勿喷,有什么可以一劳永逸的方法,欢迎评论指教下小菜鸡的学习之路
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值