public function filter_cc() {
//时间间隔
$TIME_SPAN = 3;
//最大请求数
$MAX_REQUEST = 50;
//两参数组合起来就是:限制同一IP的客户在多少时间间隔内允许的最大请求数是多少。
$this->load->model("tb_empty"); //这是redis类
$key = "Filter:CC:";
$ip = $this->get_client_ip();
$keys = $key.$ip;
$this->tb_empty->redis_incr($keys);
if($this->tb_empty->redis_ttl($keys) == -1)
{
$this->tb_empty->redis_setTimeOut($keys,$TIME_SPAN);
}
if($this->tb_empty->redis_get($keys) > $MAX_REQUEST)
{
$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
$uri = $http_type.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
exit("<meta http-equiv=\"refresh\" content=\"3;url={$uri}\"> <label>loading...</label>");
}
}