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

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

<?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;
//
?>


ファイルの書込処理において定番のスクリプトです。

$fp = fopen(ファイルのパス,"w+");
flock($fp, LOCK_EX);
fputs($fp, 書き込む文字列);
flock($fp, LOCK_UN);
fclose($fp);

例題1) カウンターを6桁表示にする
ポイント!
桁数を指定するには sprintf関数を使います。

例題2) カウンターを画像で表示する
001234という6桁の数値の場合、「0」「0」「1」「2」「3」「4」と分割し、事前に用意しておいた 0.gif , 1.gif , ・・・ 9.gif をIMGタグで表示する。文字列の分割は substr関数を使います。

PHPマスター関連記事