第2回 アクセスカウンタを作る
2002/5/4
トップページに置いてあるアクセスカウンタですが、あれは自作です。
けっこう特殊なアクセスカウンタになっています。たぶんこの方法を使っているのは他に探してもなかなかみつからないんじゃないでしょうか。
○バックエンドシステム
このアクセスカウンタを動かすためには、以下の環境が必要になります。
・PostgreSQLが動く
・rubyが動く
- erubyが動く
- ruby-postgresが動く
・apacheが動く
- mod_rubyが動く
postgresにカウント数が収まっていて、SQLを使って更新しています。
この方法を使うことで、トランザクションを考えなくて良くなります。
ちなみに入れる順番はこんな感じ(あとで特集作ります)
1.Apache、ruby、PostgreSQLをインストール
2.eruby、ruby-postgresをインストール
3.mod_rubyを入れてhttpd.confを編集
HTML文章のなかにタグを埋め込んでSQLからカウントを取りだし、一つ増やして戻す。
たったこれだけなので7行で済んじゃっています。
1.postgresライブラリの呼び出し
2.カウンタの初期化
3.postgresオブジェクトの生成
4.カウンタにクエリ結果を代入
5.カウンタを1足す
6.postgresオブジェクトを閉じる
7.表示
トランザクションはpostgresが勝手にやってくれるはずなので、ロックファイルがどうのということは考えなくても済みます。
もっとも、アクセスカウンタはロックかけてトランザクション処理するほどのものなのかはよくわかりませんが・・・
【5/5更新】
自分がアクセスする分が増えていくのは虚しいので、自分の分はカウントされないように変更しました。
2行追加されて、以下の通りです。
1.postgresライブラリの呼び出し
2.カウンタの初期化
3.postgresオブジェクトの生成
4.カウンタにクエリ結果を代入
5.アクセス元をチェック(if文)
6.お客さんだったらカウンタを1足す
7.違ったらカウンタは足さずに次へ行く
8.postgresオブジェクトを閉じる
9.カウンタの表示
環境変数"REMOTE_ADDR"を調べて192.168.X.Xの場合カウントを+1するSQL文を発行しないという単純なものです。