php實現頻率限制

2022-05-17 03:48:33 字數 1276 閱讀 2217

一、前言

公司要做呼叫中心,呼叫中心為了防止騷擾,需要限制使用者撥打**的頻率,比如30s只能點選一次。這樣的需求是通過redis來實現的。

二、具體實現

<?php 

class

resourcelock

private

function getkey($resource_unique_name

)

/*** 檢查資源鎖

* @param string $resource_unique_name

* @param int $lock_second 秒

* @return array|bool

*/public

function checklock($resource_unique_name

)

return

true

; }

/*** 檢查資源鎖

* @param string $resource_unique_name

* @param int $lock_second 秒

* @return array|bool

*/public

function setlock($resource_unique_name, $lock_second = 300)

/*** 釋放鎖資源

* @pastring $lock

* @return bool

*/public

function unlock($resource_unique_name

)

}

三、redis的方法

$redis->expire($key, 60); //

保持跟自然間隔時間相同 會自動延時60秒

四、收穫

<?php 

echo

str_replace("world","shanghai","hello world!");

hello shanghai!

?>

PHP介面訪問頻率限制

發現網上很多限制都只是1分鐘 或者某個時間 內訪問的限制 比如1分鐘限制10次 那我在59秒的訪問了10次,然後key 又過期了,接下來1分鐘又可以訪問了 這種限制根本就不合理 所以有了我的想法 直接上 吧 param uid return bool int 檢測使用者介面訪問頻率 function...

日常 靈活的頻率限制實現

靈活的頻率限制實現 1.比如有這樣的需要,當前使用者,一分鐘限制200次,一小時限制1000次 當前ip,一分鐘限制2000次,一小時限制10000次 2.配置檔案中,key就是要限制的當前使用者的關鍵字,比如使用者郵箱或者使用者手機號 array prefix selfservice key ar...

滑動視窗實現訪問頻率限制

主要思路有兩個 以時間戳為有序集合的成員 每次請求,先使用zremrangebylex命令移除視窗外的成員 使用zrange命令獲取有序集合的成員和相應權重 使用zincrby命令對相應的成員的權重加一 使用expire命令重新設定有序集合有效期 對獲取到的有序集合的成員的權重求和,並判斷是否超過閾...