日別のアクセスログファイルを作成
日別のアクセスログファイルを作るの続き。
複数のサーバーからアクセスログ(軽量化した生ログ)をダウンロードしてくる。
それを指定のディレクトリに納めた上で、指定した日付を含むアクセスログをパターンマッチで見つけて、最後に出力用にまとめる。
色んな日付のアクセスログが混ざっていても、ここでふるい分ける。
ここで注意が必要なのが、日付の表示形式で、Apacheのアクセスログは、
[26/Jan/2018:00:12:59 +0900]
という形式で出力されてくるので、ちょっと工夫が必要になる。
と言うのもパターンマッチは普通、preg_match( $pattern , $data)の形式で使うのだが、日付表示にスラッシュ(/)が含まれているため、このままでは
Warning: preg_match(): Delimiter must not be alphanumeric or backslash
(デリミタは、英数字やバックスラッシュ以外でないとダメ)
というデリミタ・エラーが出てしまうのだ。
デリミタというのは「区切り文字」のことで、 通常は「/」が使われるのだが、日付にもスラッシュがあるため、混乱が起こっていると言うことらしい。
そこで、スラッシュ以外のデリミタを使う必要がある。
以下の例では、preg_match('{'.$yesterday.'}', $logstar)と言うように、{ }を使っているが、他にも[ ]とか、<>等も使えるので、それに変更する。。
パターンマッチで、特定日付にマッチするアクセスログだけ抜き出す。
成型したログファイルを出力
出力される拡張子は、今回は[.txt]にしてみた。
軽量化された生ログが【.log】で、→日別にまとめてない段階が【.ini】で、→日別にまとめた段階が【.txt】と言う風に、混じってもどの段階か分かるようにしている。
ということで、次は日別のアクセスランキングを作るPHPスクリプト。