SAK 図書館
CGI-Perl 基礎実地編 - 実習16 (アクセスカウンタ作成)
■アクセスカウンタ仕様 ・さて、実習1 〜 15 でアクセスカウンタを開発するに十分な知識を習得され たと思います。最終成果物として、実際に各自がアクセスカウンタを作って おしまいです。 ・一口にアクセスカウンタと言っても色々と種類があります。 表示面では、 A) 画像カウンタ a) 桁個別タイプ b) 一括タイプ B) テキストカウンタ a) SSI タイプ (サーバサイドインクルード) b) IFRAME タイプ が代表的です。 カウント方法では、 A) 単純型 (リロードでもカウントする) B) セッション型 (ブラウザが再起動されないとカウントしない) C) 時間経過型 (一定の時間が経過しないとカウントしない) が代表的です。 その他に A) 当日、前日のカウント集計をするもの B) アクセス解析をするもの などもあります。 ・テキストカウンタの SSI は、使えないサーバの方が多いです。 また、同じくテキストカウンタの IFRAME は、IE でしか表示できません。 従って、基本的には画像カウンタを目指されると良いです。 画像カウンタの一括タイプはレンポンスの速度が非常に高速です。 これは、CGI の中で 6 桁なりのカウント画像を合成してひとつのイメージ として出力します。GIF のヘッダ、パレット、データ、トレーラを合成しま す。ちょっと難しいかなと思いますので、シンプルな桁個別表示タイプの画 像カウンタにしましょう。 ・次にカウントの方法です。 単純型は実に簡単で普通に作ればそうなります。 これの欠点は、画像はキャッシュされてしまうので、ブラウザを起動し直す か、リロードしない限りカウントアップされないことです。 逆に言うと、リロードしまくれば簡単にカウントアップしてしまいます。 セッション型、時間経過型は実は同じロジックで実現できます。 クーキーに有効期限を指定しないとブラウザの起動中のみ保持されますので、 何回リロードしようが、ブラウザを再起動しない限りカウントしません。 これでもブラウザを再起動し直せば、カウントアップするので、もっと現実 的なのはクッキーに有効期限を設定することです。 例えば 24 時間後を設定すれば、24 時間経過後にアクセスしない限りカウ ントアップしません。 クッキーのロジックにもよりますが、経過時間はアクセスがない時間となり ますので、10 分としても、10 分以内のアクセスを続ければ、いつまでたっ てもカウントアップされません。(1 セッションとみなされる) もし、1 分ぐらいを設定するのであれば、単純型で作ったのと同じと思いま すので意味がありません。5 分〜 10 分ぐらいが適当かと思います。 各自の好みで選択して下さい。 尚、単純型が一番簡単なのは言うまでもありません。 ■排他制御 ・複数のアクセスが同時に起こった場合、カウントデータが排他で読めない可 能性があります。考慮しておかないとカウンタがゼロに戻ったりします。 ファイルロックを使うのが良いと思うのですが、やってみたところ、アクセ スが集中すると CGI の処理が追いつかないようです。 私は更新が重なったら、カウントを捨てるようにしました。 少なめのカウントになりますが、そうそう重なるものでもありません。 ただ、重なったときにカウンタがリセットされるのはつらいです。 このへんは、成果物を披露してもらえれば、アドバイスしたいと思います。 ■アクセスカウンタ作成 ・さあ、アクセスカウンタを作成してみましょう。 カウンタイメージなどは各自でデザインして下さいね。 ■CGI-Perl 基礎実地編資料
■CGI-Perl 基礎編資料
■CGI-Perl 応用実地編資料
■PHP 基礎編資料
■PHP + MySQL 編資料