PHP介面訪問頻率限制

2021-10-09 02:57:06 字數 1051 閱讀 2226

發現網上很多限制都只是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...