PHPでつくる簡易Apacheアクセスログ解析

analytic.php

<?PHP
$argDate = strtotime($argv[1]);
$file = $argv[2];
 
for($i = -120; $i <= 120; $i++){
  echo date('d/M/Y:H:i', strtotime("+${i} minute", $argDate));
  if($i < 120){
    echo "\n";
  }
}
?>

analytic.sh

#!/bin/sh
echo '' > result.csv
for line in `php ./analytic.php "${1}" ./access_log` ; do
  count=`grep "${line}" ./access_log | egrep -v "\.(gif|jpg|css|js) " | wc -l`
  echo ${line},${count} >> result.csv  
done

access_logがあるフォルダに上記のファイル2点を作成して

sh ./analytic.sh "2012-06-13 18:00:00"

としてあげると数十分シェルが固まってから6月13日の18時から前後2時間で分毎のおよそのリクエスト数がresult.csvに出力されます。