i16@imasy.or.jp あなたは [ 42007 ] 人めです

SSI によるアクセスカウンタ (排他制御あり)


もしサーバが unix で SSI が使えるなら、SSI でアクセスカウンタが出来ます。
<!--#exec cmd="sh -c 'ln -s count lock/lock && (c=`cat count`;expr $c + 1 | tee count;rm lock/lock)'"-->

アクセスすると、このコメントもどきの部分が数字に置き替わります。 これが動くなら、テキストだけなので、超軽いです。

これを HTML の中に1行に書いて、
count という、数字の入った mode 606 のファイルと
lock という mode 707 のディレクトリを作れば
たいていのサーバでOKです。

telnet して
% echo 0 >count
% chmod 606 count
% mkdir lock
% chmod 707 lock

あるいは
数字の 0 の入ったファイルを ftp して、
ftp ソフトでモードを 606 に、
lock と言うディレクトリを作って、モードを 707 にします。

このカウンタは排他制御をしているので、よく本などに例として出てるものよりずっと安全に動きます。
排他制御をしないと、結構カウンタが壊れちゃうんです。(^^;

もしかすると、サーバによっては HTML のファイル名を index.html ではなくて index.shtml にする必要があるかもしれません。
あるいは必要に応じて、
AddType text/x-server-parsed-html .html

と書いた .htaccess (先頭のピリオドも必要)というファイルを置いておきます。

なお、imasy.or.jp など SSI にパラメータが使えないところでは、
--->8---- (ここから)
#!/bin/sh

ln -s count lock/lock && (c=`cat count`;expr $c + 1 | tee count;rm lock/lock)
--->8---- (ここまで)

を別ファイル(count.sh とします)に書いて mode 705 にして、コメントもどきを、
<!--#exec cmd="./count.sh"-->
とする必要があります。suexec のところはこちらを試してください。

このカウンタがうまく動かない場合は、CGIメーリングリストで質問してください。
このページの説明が簡潔すぎて解らないかたは、Web裏技などを参考にしてください。


i16(愛一郎)