接口---redis防刷

/**
     * 防止接口恶意调用
     */
    public function checkRequest(){

        # 一分钟调用接口不能超过10次
        $limit = 10;

        $time = 10;

        $this -> redis -> select(12);

        $ip = request() -> ip();


        $lock_time = $this -> redis -> zScore( 'black_list' , $ip );

        if( time() - $lock_time < 5*60 ){
            $this -> error('调用接口太过频繁,请稍后重试');
        }else{
            $this -> redis -> zRem( 'black_list' ,$ip );
        }

        # 记录ip访问次数
        $ip_value = $this -> redis -> get($ip);

        if(  ! $ip_value ){

            # 设置key自增
            $this -> redis -> incr( $ip );

            # 设置过期事件为11秒
            $this -> redis -> expire( $ip , $time );

        }else{
            $this -> redis -> incr( $ip );
        }

        //集合【里边的元素是不会重复的】 字符串

        // 集合里边的元素 不能单独设置有效期

        # 超过10次,把ip记录到黑名单,把ip存入redis (set)

        # 把ip当作key ,存入redis  存5分钟
        if( $ip_value > $limit ){

            # 使用有序集合存取
            $this -> redis -> zAdd( 'black_list' , time() ,$ip );

            # key value 字符串存取

//            $key = md5( $ip );
//
//            #记录黑名单
//            $redis -> set($key,1,60);

//            # 集合  --- 数据不会重复的
//            $redis -> sAdd( 'black_list' , $ip );
//
//            $redis -> expire( 'black_list' , 60 * 5 );

            $this -> error('调用接口太过频繁,请稍后重试');

        }
//        exit;

    }
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奇葩也是花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值