php redis 限单用户5秒请求一次。

常见应用场景,发帖,回帖,发送短信请求等,秒杀抢购等,需要限制单个用户单位时间内的有效请求次数时使用。

    /**
     * 单位时间内请求次数限制。
     * @return array
     */
    function preCheck_frequency( $lock_key  , $expire = 0  , $tag = '发帖'){


        if( !$expire ) $expire = self::REQUEST_INTVER_SECONDS;
        $redis    =  BusinessHelper::createRedisObj();
        if( $redis->get($lock_key)){
            $left_time = $redis->ttl($lock_key);
            return  array( "status" => false , "message" =>$expire ."秒内只允许 $tag 一次!请".$left_time."之后再尝试");
        }else {
            $redis->setEx($lock_key ,  $expire , "1" );
            return array("status"=> true , "message"=>"success");
       }
    }

//调用代码。
//对单个用户生成一个键值
$user_id = 1;
$key = "test_post".$user_id;
$r =  preCheck_frequency($key , 10 , "发帖");
if(  !$r["stauts"]){
  exit( $r["message"]);
}

猜你喜欢

转载自www.cnblogs.com/babytuo/p/9004722.html
今日推荐