| | ● カウンター [ 008 ] 取り敢えずは、自分が使えれば良いんだというのがあるけれど、サイトにて公開形式にするのは、適当にならず緊張感をもって、または真摯的に、そして開き直り風に取り組むのではなかろうかというところからだ。 そういう意味では、奇特な誰かが使って「無限ループでサーバーがダウンした。どうしてくれる?」なんてクレームが来るんなじゃないかと日々戦々恐々の小心者。
少しでも何となくperlが分かってくると(あくまでも当社比)、なるべくはオリジナルのでと思ってしまう悪魔の囁きがある。 それなら今度はアクセウカウンターだ! と思い込んだのは良いのだが、たいていは重要なindex.htmlにあって、同時アクセスによるトラブル防止がより重要(他のも大切だけど)であるファイルロック機能を勉強しなければならなかった。昨日まで30,000だったアクセスが今日になったら突然23とかになってしまったとしても、それが気にならない世俗を超越した達人なら問題ないが、カウンター1つ上がっただけでも大喜びするような私にとっては、1カウンターは血の一滴だ!
ファイルロック機能には、open、mkdir、symlink、flock、Hardrock、Heavymetalなどがあり、後者の2つぐらいしか分からなかった。ヤッフーで「ファイルロック」で検索し、片っ端から見ていったけど、これだけでも結構勉強になった。つまり、ファイルロックはとても大切なことで、なおかつ、とても難しいものだということが分かった。 ファイルを書き込もうとすると、perlが自動的にダミーファイルを作ってくれる。それが存在する間は他の人は書き込めない。書き込みが終わると、これまた自動的にそのダミーファイルを削除してくれ、次の人が書き込めるという方式が一番理解できた(ような気がした)。
高橋名人の十連打(ふ、古い)よろしく続けざまの連続アップを防止する機能が一番難しかった。最初はクッキーを使ったのだけど、ブラウザー設定でキャンセルされたら意味ないし、別ファイルを作ってそこに記録して、なんてぇのも量が増えるだけでスマートではない。 「困った時のフリーcgi頼み」ということで、KENT-WEBのを見たら、おおお、$ENV{'REMOTE_ADDR'} という手があった。うーむ、さすが達人だ。 カウンターの数字を記入するログファイルに、その数字とREMOTE_ADDRから吐き出される数字の5桁をコンマを抜いて記すようにした。これなら連続にやろうとしても、REMOTE_ADDRは変わらず、同じ数字になるのでアップしない。 やったー!!と思いきや、別な問題が出てきた。perlっていつもこれね。一つが解決するとまた次の別な問題がやってくる、それの繰り返し〜。 連続カウントアップをOKにすると、REMOTE_ADDRには何も入らないので、当然次の人も空欄なので、同じモノとしてカウントアップしなくなった。 これは単なる振り分けを忘れていて「もし連続アップOKなら、同じ数字でもOK。」というif構文が抜けていた。あー、疲れた。 最後に「とほほWWW入門」サイトで公開しているgifcat.plを使って、やっとこさ一気に画像カウンターが表示した時の喜びは大きかった。ssiのplからだと上手く表示されなくてエラー・・・今後の課題だな。 少なくとも徒労ではなかったのがマシとも言えよう。
ところで、最初にサイトを作った頃は、ドカーンとアクセスカウンター画像があるのがカッチョ良いと思っていたけど、最近では、ちっちゃく表示というのがお洒落に感じてきた。 人生、半分以上過ぎてしまうと夢も小さくなり、カウンターの大きさもそれに比例してしまうのか? とは言っても、今のカウンターは最初から変わっていないけどね。 |
|