PHP redis limits a single user to request once every 5 seconds.

Common application scenarios, such as posting, replying, sending SMS requests, etc., flash purchases, etc., are used when it is necessary to limit the number of valid requests per unit time for a single user.

 

    /**
     * The number of requests per unit time is limited.
     * @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 is only allowed once in seconds ! Please ". $left_time ." and try again later" );
        }else {
            $redis->setEx($lock_key ,  $expire , "1" );
            return array("status"=> true , "message"=>"success");
       }
    }

// call code.
//Generate a key for a single user 
$user_id = 1 ;
 $key = "test_post". $user_id ;
 $r = preCheck_frequency( $key , 10 , "post" );
 if ( ! $r ["stauts" ]) {
   exit ( $r ["message" ]);
}

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325649215&siteId=291194637