■サンプルソース
<?php $data = date('Y/m/d H:i:s') . "\t"; $data .= $_SERVER['SCRIPT_NAME'] . “\t”; $data .= $_SERVER['HTTP_USER_AGENT'] . “\t”; $data .= $_SERVER['HTTP_REFERER'] . “\n”; $file = fopen(’dat/access.log’, ‘a’); flock($file, LOCK_EX); fwrite($file, $data); flock($file, LOCK_UN); fclose($file); print(’アクセスログを記録しました’); ?>
■出力ファイル例
2008/01/10 17:15:06 /php10/write/index.php Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
2008/01/10 17:15:20 /php10/write/index.php Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
2008/01/10 17:15:20 /php10/write/index.php Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
2008/01/10 17:15:21 /php10/write/index.php Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
2008/01/10 17:15:21 /php10/write/index.php Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
2008/01/10 17:15:21 /php10/write/index.php Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
2008/01/10 17:15:22 /php10/write/index.php Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
2008/01/10 17:15:23 /php10/write/index.php Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
■スーパーグローバル変数の解説
- $_SERVER[‘SCRIPT_NAME’]
実行中のスクリプト - $_SERVER[‘HTTP_USER_AGENT’]
クライアント環境(ブラウザの種類等) - $_SERVER[‘HTTP_REFERER’]
リファラー(リンク元)
■関数の解説
- resource fopen(string file, string mode [,int use_path])
対象のファイルパス、オープン時のモードからオープンに成功した場合、ファイルハンドラを返す - int fwrite(resource handle, string string [,int length])
ファイルハンドルで書き込みファイルを指定し、(指定文字バイト数だけ)文字列を書き込む - bool flock(resource handle, int operation)
ファイルをロックする。ロックのモードは下記のようになる- LOCK_SHは共有ロック
- LOCK_EXは排他ロック
- LOCK_UNはロック解除
- LOCK_NBロック中にflockによるブロックを禁止
- fclose($file);でファイルを閉じる
■追記
- アクセスログなどにも多少の変更で流用可能