發現網上很多限制都只是1分鐘(或者某個時間)內訪問的限制
比如1分鐘限制10次 那我在59秒的訪問了10次,然後key 又過期了,接下來1分鐘又可以訪問了 。這種限制根本就不合理
所以有了我的想法
直接上**吧
/**
* @param $uid
* @return bool|int
* 檢測使用者介面訪問頻率
*/function api_frequency_visits ($uid) :api:frequency";
$redis = new redis();
$redis->connect('127.0.0.1');
$data = $redis->hgetall($key);
//需要刪除的key
$del_key = ;
//時間內訪問的總次數
$total = 0;
//時間內最大訪問次數
$max_frequency = 10;
//當前時間
$now_time = time();
//限制時間
$limit_time = 60;
foreach ($data as $time=>$count) else
}//存在需要刪除的key
if ($del_key)
if ($total >= $max_frequency)
return $redis->hincrby($key, $now_time, 1);
}$uid = 1;
$result = api_frequency_visits($uid);
if (!$result)
echo json_encode(['code'=>1, 'msg'=>'', 'data'=>[
'uid'=>$uid,
'other'=>rand()
]]);die;
限制時間,限制次數這些都可以修改,包括根據使用者id也可以換成自己想要的限制,比如ip等
key過期時間也是可以新增的
介面限流 限制介面的訪問頻率
限流,顧名思義,就是限制對 api 的呼叫頻率。每一次 api 呼叫,都要花費伺服器的資源,因此很多 api 不會對使用者無限次地開放,請求達到某個次數後就不再允許訪問了,或者一段時間內,最多隻允許訪問 api 指定次數。目前,我們的介面是沒有任何限流措施的,只要使用者呼叫介面,伺服器就會處理並返回...
第 14 篇 限制介面的訪問頻率
限流,顧名思義,就是限制對 api 的呼叫頻率。每一次 api 呼叫,都要花費伺服器的資源,因此很多 api 不會對使用者無限次地開放,請求達到某個次數後就不再允許訪問了,或者一段時間內,最多隻允許訪問 api 指定次數。目前,我們的介面是沒有任何限流措施的,只要使用者呼叫介面,伺服器就會處理並返回...
php實現頻率限制
一 前言 公司要做呼叫中心,呼叫中心為了防止騷擾,需要限制使用者撥打 的頻率,比如30s只能點選一次。這樣的需求是通過redis來實現的。二 具體實現 class resourcelock private function getkey resource unique name 檢查資源鎖 para...