常见应用场景,发帖,回帖,发送短信请求等,秒杀抢购等,需要限制单个用户单位时间内的有效请求次数时使用。
/** * 单位时间内请求次数限制。 * @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"]); }