사용자가 페이지를 자주 새로 고치는 것을 방지하기 위해 새로운 요구 사항이 추가되었습니다. 구체적인 요구 사항은 사용자가 지정된 페이지를 1분 내에 100회 이상 요청할 경우 해당 요청이 바로 거부된다는 것입니다. 주의 깊게 분석한 결과 이 기능이 memcache를 사용하는 데 가장 편리하다는 것을 알았습니다.
1. 사용자 IP와 요청한 파일 이름을 KEY 값으로 사용합니다.
2. 사용자 방문 수를 자동으로 기록하려면 memcached 메서드 increment()를 사용하세요. 이는 원자 단위로 증가하며 정확합니다.
3. set() 설정 시 만료 시간을 60초로 지정하여 1분 동안의 방문 횟수를 계산합니다.
그래서 함수를 작성하고 프로젝트 초기화 파일에 호출했습니다. 함수 내용은 다음과 같습니다.
function requestCount(){ $patharr = pathinfo($_SERVER['PHP_SELF']); $filename = explode('?',$patharr['basename']);//获取当前文件名 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); } } }