Reids 限制频繁请求拦截处理

 /**
  * 限制频繁请求拦截处理
  * 1、先判断用户是否有访问过。没有进行存储
  * 2、访问过,自增访问数量。
  * 3、计算经过了多久。
  * 4、然后就是产品经理提的规则
 */
public function test(){
        $user_id = 'user_id_'.'100';
        $valid_time = 600;
        $redis = new Redis(config('redis'));
        $redis = $redis->handler;
        if (!$redis->exists($user_id)){
            $redis->setex($user_id,$valid_time,1);
        }else{
            $count = $redis->incr($user_id);
            $ttl = $redis->ttl($user_id);
            $pass_time = $valid_time - $ttl;
            if ($pass_time <= 1){
                if ($count > 1){
                    echo '1秒内请求不能超过1次';
                }
            } else if ($pass_time <= 10){
                if ($count > 3){
                    echo '10秒内请求不能超过3次';
                }
            }else if ($pass_time <= 60){
                if ($count > 5){
                    echo '60秒内请求不能超过5次';
                }
            }else if ($pass_time <= 180){
                if ($count > 10){
                    echo '180秒内请求不能超过10次';
                }
            }else if ($pass_time <= 300){
                if ($count > 15){
                    echo '300秒内请求不能超过15次';
                }
            }else if ($pass_time <= 600){
                if ($count > 20){
                    echo '600秒内请求不能超过20次';
                }
            }
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_38776443/article/details/89538625
今日推荐