PHPを使って簡易アクセスカウンターを作る方法をご紹介したいと思います。
簡易アクセスカウンターですので、アクセス解析ツールのような同一IPからの連続アクセスを1カウントとする・・・といったようなことはせず、ページにアクセスする度に、カウントされていくようなものを想定しています。
このカウントしていく仕組みを知っておくと、普段パソコンでテキストファイルを読み書きしているようなことが、 PHPでも、サーバーに置かれたテキストファイルなどをプログラム上で読み書きができることを感じられると思いますので、これからPHPを学びたいとお考えの方にも結構役立つサンプルなのではないかと思います。
▼サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $filename = 'counter.dat'; // counter.datというカウント数を書き込むテキストファイル $fp = fopen($filename, "r+"); // counter.datファイルを fopenで開く $count = fgets($fp,32); // fgets関数でcounter.datに書かれたカウント数を読み込む $count++; // counter.datに書かれたカウント数を加算 fseek($fp, 0); // fseek関数でcounter.datの読み書きを行う場所を先頭に戻す fputs($fp, $count); // fputs関数でカウントされた数をファイルに書き込む flock($fp, LOCK_UN); // flock関数でファイルを上書きされないようにロックする fclose($fp); // fclose関数でファイルを閉じる echo $count; // カウントされた数字を表示 ?> |
一連のコードの流れをご説明しますと、 まず、2行目でアクセスした際のカウント数を記録しておく「counter.dat」というテキストファイルを用意して、$filename という変数に代入しておきます。
また、counter.datを作成の際は、事前に 0 (ゼロ)を記述しておきます。
その後、以下のような流れでプログラム処理が進んでいきます。
4行目 : counter.datファイルを fopen関数で、「読み込み&書き込み」モードで開きます。
5行目 : fgets関数でcounter.datに書かれた内容を読み込みます。
6行目 : counter.datに書かれた内容に1をプラスします。
7行目 : fseek関数でcounter.datの読み書きを行う場所を先頭に戻します。
8行目 : fputs関数でカウントされた数をファイルに書き込みます。
9行目 : flock関数で自分がファイルに書き込んでいるときに他人によってファイルを上書きされないようにロックしておきます。
10行目: fclose関数でファイルを閉じます。
11行目: echo でカウントされた数字を表示します。
この一連の流れが、PHPでファイルを「読み込み&書き込み」する場合の基本的なコードの書き方になりますが、 以下のようにファイルを設置しプログラム本体へアクセスをすると、アクセスする度にカウントが加算されていく様子が確認できると思います。

今回ご紹介させてただいた簡易アクセスカウンターは、PHPを使ったファイルの「読み込み&書き込み」を行う基本的なコードですが、コードを工夫することで本格的なアクセス解析ツールを作成したり、データベースを使わない簡易ブログツールなどを作ることもできると思いますので、次の機会にもう少し発展させた使い方をご紹介したいと思います。