1stPHP
メール
カウンター
<?php
include "../../d/common.php";
$common = new common;
$common->showHead("カウンター-".$common->cfg[title],"../../css/main.css","","../../d/count/top.cgi");
$common->showAdd();
$common->smpmenu("カウンター","./counter.php");
define(LOG , "./data/counter.txt");
//ファイルを読みこみ・書きこみモードでオープン(ファイルポインタ先頭)
//オープンに失敗したら、exitでメッセージを表示して終了します。
//@が付いているのでエラーは制御されています。
$fp = @fopen(LOG , "r+") or exit(LOG."のオープンに失敗しました");
//書き込みバッファをゼロにします。
//他のプロセスが同じファイルに書き込みを行う前に完了することが保証されます。
stream_set_write_buffer($fp, 0);
//排他ロック
flock($fp, LOCK_EX);
//$countに一行読み込みます(ファイルポインタ移動)
$count = fgets($fp);
//$countをひとつ増やします
$count++;
//同じ位置に書き込むので、ファイルポインタを先頭に戻しています。
rewind($fp);
//$countを書き込み
fwrite($fp, $count);
//ロック解除
flock($fp, LOCK_UN);
//ファイルクローズ
fclose($fp);
//カウンタ表示
print "<p>$count</p>";
$common->showFoot();
?>