 |













|
 |


【資料請求無料】
★受講料の一部を国が支給!「WEBデザイナー養成講座」




■アクセスカウンターでファイルの読み書きを覚えよう |
 |
|
アクセスカウンターとファイルの読み書きにどんな関係があるのでしょう・・・。
皆さんが通常パソコンで作業を行うことを考えてみてください。まず、必要なファイルを開きますよね。その後に、必要なものを書き加えて保存してから閉じると思います。実は、アクセスカウンターもこれと同じような動作をしているわけです。
カウンター用のファイルを開く → 今のカウントに1つ足す → 保存 → 閉じる
アクセスカウンタはこのような作業をアクセスの度に自動的に行ってます。
|
 |
もっともシンプルなカウンターを作ってみましょう。
まず、0 とだけ入力したファイルをcounter.datという名前で保存します。この時に、ファイルのパーミッションを666にしてください。666とはサイトに訪れた人がカウンタファイルに読み書きができる設定です。
次に、以下のようなPHPのスクリプトを用意します。
・ソース
このスクリプトの解説
$fp = fopen($filename, "r+");
先ほど説明した「ファイルを開く」という作業がfopenという関数にあたります。
そこで、ファイル名を指定して開きます。また、r+というのは、読み込み書きこみ用にファイルポインタが先頭の状態で開くモードということです。分かりやすく言うと、前のカウントデータの上書き処理をしやすいモードということです。また、ファイルポインタというのは、ファイルの読み書きを行う場所と考えてください。
| fopenのその他のモード |
| 記述 |
処理内容 |
説明 |
| 'r' |
読み込みのみ ファイルポインタを先頭に置く |
バイナリデータ読み込む時に用いることが多いです。 |
| 'r+' |
読み込み&書き込み ファイルポインタを先頭に置く |
先頭から上書き処理をします。なので、前のデータより小さいデータを書きこむ際にはゴミが付く原因になるので注意が必要です。 |
| 'w' |
書き込みのみ ファイルポインタを先頭に置く |
ファイルを空にするのが特徴です(これが原因でデータが飛んだりもします)また、ファイルが存在しない場合は新規作成を試みます。 |
| 'w+' |
読み込み&書き込み ファイルポインタを先頭に置く |
使用頻度は低いですが、上記の読み込み&書きこみ版です。 |
| 'a' |
書き込み ファイルポインタを終端に置く |
追記型です。ログなどの1行ずつ足していくタイプのものに重宝します。 |
| 'a+' |
読み・書き ファイルポインタを終端に置く |
使用頻度は低いですが、上記の読み込み&書きこみ版です。 |
$count = fgets($fp,32);
開いたファイルから、現在のカウント数を読み込みます。128という数字に特に意味はありません。改行やファイルの最後に至るまでに32バイトまで読み込むということです。カウンタですので、これだけあれば十分でしょう。
$count++;
$countに1追加します。
fseek($fp, 0);
これは、ファイルポインタを先頭に戻す関数です。
fgetsで読みこむことによって、ファイルポインタは終端に移動してしまいます。書きこみ処理を行う前に強制的に戻す必要があります。
fputs($fp, $count);
ここで$countのデータの書きこみ処理を行います。
fclose($fp);
開いたファイルは必ず閉じる必要があります。
最後に出力して終了です。
ファイルのロックをしよう! -ファイルの誤作動や損傷を防ぐ-
もし、ファイル共有などで自分がファイルの編集を行っている時に、他人が上書きしようとすると大変困りますよね。アクセスカウンタにもこのような状態に陥る時があります。そんな時には、自分がファイルを読みこんでいる間だけロックしてしまいます。ファイルロックをすることによって、ファイルの損傷や誤動作を防ぐことができます。
・ソース
|
|
また、PHPのバージョンが4.01より前の場合は、
flock($fp, LOCK_EX);
の部分を
flock($fp, 2);
に変更してください。
flock($fp, LOCK_UN);
の部分を
flock($fp, 3);
に変更してください。
出力フォーマットを変えてみよう
$count++; の次の行に、
$count = sprintf("%06d", $count);
という1行を足してみましょう。桁数を0で補い、6桁で表示されるようになります。
例)000154
もし、5桁にしたいのであれば、"%05d"に変更します。
このアクセスカウンタを通して、ファイルの読み書きの考え方がある程度ご理解いただけたと思います。これを基本的に、データベースを使わず、テキストベースのログで管理するWebアプリケーションは、これの応用になります。ファイルの扱いを理解することが、PHPの大切な部分の1つ言えるでしょう。
オススメ!PHPが使える格安レンタルサーバーのご紹介
| PHPが利用可能で値段が月々833円という格安のレンタルサーバーです。SSHでのアクセスも可能な上、MySQLも使えるので、ちょっとしたデータベース系のサイトの構築も可能です。充実したコントロールパネルや、無制限のPOP3アカウントなど、レンタルサーバーとして基本的な機能も揃っています。 |
 |
| 本格的なWebサイトの運用を考えている方や法人の方には、専用サーバーがお勧めです。専用サーバーとは、1台のサーバーを1人のユーザーのみで運用が出来るサービスで、100人前後で切り分けて利用するレンタルサーバーに比べて安定した運用が可能になります。ページビューが多いサイトや、プログラムを使った高負荷なサイトに最適です。
(2003/06現在) |
|
オススメ!分かりやすいPHP関連書籍を最短24時間でお届け!

|
|
 |