아파치 로그 특정 페이지 몇번 호출 되었는지 횟수 체크
아파치 로그에서 특정페이지(URL) 호출의 횟수를 알아봐야 하는 경우 아래 프로그램을 자신의 환경에 맞게 수정하여 사용하면 됩니다.
그리고 저 같은 경우 로그의 갯수가 몇만개 밖에 안되서 문제 되지 않지만 더 많을 경우 1차 2차 필터링 과정을 거치는 방식을 사용해서 처리 해야 하는것 참고하 주세요.
기본 방식이 중요하기 때문에 아래를 응용해서 사용하면 됩니다.
$urlCounts = [];
while ($line = fgets(STDIN)) {
if (preg_match('/^.*"GET ([^"]+) HTTP/', $line, $matches)) {
$url = urldecode($matches[1]);
if (!isset($urlCounts[$url])) {
$urlCounts[$url] = 0;
}
$urlCounts[$url]++;
}
}
arsort($urlCounts);
foreach ($urlCounts as $url => $count) {
echo "$count: $url\n";
}
파이프를 통해서 받기 때문에 STDIN 입니다.
● 실행 방법
php 경로는 시스템마다 다를 수 있으니 본인의 경로에 맞게 지정해 주면 됩니다.
cat ./www_access_log | grep 'pabburi.co.kr' | /usr/local/php/bin/php apache_log.php