技术饭

判断用户请求频繁度,防止机器请求

copylian    0 评论    383 浏览    2020.05.03

判断用户请求频繁度,防止机器请求,订单秒杀、刷票、刷红包等活动,经常有人通过机器来刷,机器一秒请求上百次甚至上千、上万次,那么这个时候正常用户就没法玩了,接口就会被刷爆掉,所以我们在写代码的时候经常需要做很多的验证来防止被刷。

/**

 * @desc 判断用户请求频繁度,防止机器请求

 * @author copylian@aikehou.com

 * @param int $checkTime 请求间隔秒数

 * @param string $id 标识符

 * @return boolean 频繁或者不频繁

 */

function check_request_time($checkTime = 1, $id = MODULE_NAME.CONTROLLER_NAME.ACTION_NAME) {

        $request_time = microtime ( true ); // 1460357300.6969

        $request_time_arr=session ( "request_time" );

        $last_request_time=0;

        $id=md5("HDD".$id);

        if(isset( $request_time_arr[$id] )){

                $last_request_time = intval ( $request_time_arr[$id]);

        }

        if ($last_request_time > 0 && ($request_time - $last_request_time) < $checkTime) {

                return false;

        }

        $request_time_arr=is_array($request_time_arr)?$request_time_arr:array();

        $request_time_arr[$id]=$request_time;

        session ( "request_time", $request_time_arr );

        return true;

}

CopyLian
感谢你的支持,我会继续努力!
扫码打赏,感谢您的支持!
用户 请求 频繁 机器 

文明上网理性发言!

  • 还没有评论,沙发等你来抢