|
有個(gè)新需求要加上去,防止用戶頻繁刷新頁面。具體需求是當(dāng)用戶在一分鐘之后內(nèi)請求指定的頁面超過100次,就直接拒絕請求。仔細(xì)分析后發(fā)現(xiàn)這個(gè)功能用memcache來做最方便:
1、以用戶IP和被請求的文件名作為KEY值。
2、以memcached的方法increment()來自增記錄用戶訪問次數(shù),increment()是原子性增加,準(zhǔn)確。
3、設(shè)置set()時(shí)指定過期時(shí)間為60s,這樣就統(tǒng)計(jì)一分鐘的訪問次數(shù)。
于是寫了個(gè)函數(shù)放在項(xiàng)目的初始化文件中調(diào)用,函數(shù)內(nèi)容如下:
function requestCount(){ $patharr = pathinfo($_SERVER['php_SELF']); $filename = explode('?',$patharr['basename']);//獲取當(dāng)前文件名 if( in_array($filename['0'],array('index.php','login.php','password.php')) ){ global $memcache; $clientip = get_client_ip(); //使用長整型IP和文件名生成KEY $ipkey = 'C'.sprintf("%u", ip2long( $clientip )). $filename['0'] ; if( $visitCount = $memcache->get($ipkey) ){ if($visitCount == 100){ die('<h1>Please don/'t refresh your page!</h1>'); }else{ $memcache->increment($ipkey); } }else{ $memcache->set($ipkey,1,0,60); } }}
php技術(shù):php中用memcached實(shí)現(xiàn)頁面防刷新功能,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。