@blog.justoneplanet.info

日々勉強

PHPでファイルへ書き込みをしよう

■サンプルソース

<?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);でファイルを閉じる

■追記

  • アクセスログなどにも多少の変更で流用可能

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment