通过redis集合方式实现接口防刷,进入黑名单
//接口防刷
public function InterfaceBrush(){
$redis = new \Redis();
$redis->connect('127.0.0.1' , '6379', '' );
if(time() - $redis->zScore('black_list',$_SERVER['REMOTE_ADDR']) < 15){//小于15秒
return json_encode(['code' => 303, 'msg' => '接口访问已达到上限'],JSON_UNESCAPED_UNICODE);
}
if ($redis->get($_SERVER['REMOTE_ADDR'])) {
if ($redis->get($_SERVER['REMOTE_ADDR']) < 30) {//小于30次
$redis->incr($_SERVER['REMOTE_ADDR']);
} else {
$redis->zAdd( 'black_list' , time() ,$_SERVER['REMOTE_ADDR']);
return json_encode(['code' => 304, 'msg' => '接口访问已达到上限'],JSON_UNESCAPED_UNICODE);
}
} else {
$redis->set($_SERVER['REMOTE_ADDR'], 1, 10);//有效时间为10秒
}
}