プログラミングにおいて簡易カウンターを作る事で「ファイルの読み込み」「ファイルのデータ取得」「データの加工」「ファイルへの書込」という基本事項が学べます。注意すべき点は、ファイルに対する同時書き込みの制御です。データベースでは、トランザクションや排他ロックなどのしくみがデータベースサーバ自体にあらかじめ備わっていますが、単なるテキストファイルとなると、また、あなたの作るプログラムにその機能を実装しなければなりません。

プログラム言語には排他処理を司るコマンドが用意されていますのでそれを使うだけの話ですが、「ファイルへの書込」の排他制御は常に意識しておきましょう。

<?php
//
$num = 0;
$cfile = "./count.txt";
//$data  = file($cfile);
//$old   = $data[0];
$data  = fopen($cfile,"r+");
$old   = fgets($data, 1024);
$old   = str_replace('', "\n|\r", $old);
if(!$old) { $old = $num; }
//
$new   = $old + 1;
$fp = fopen($cfile,"w+");
flock($fp, LOCK_EX);
fputs($fp, $new);
flock($fp, LOCK_UN);
fclose($fp);
//
print $new;
//
?>

continue reading…