Top / 雑記:2005-05-08

PHPがアンテナに対応していない!?(2005年05月08日)

とりあえず、今回はsue445さんのところで話題になったので
PHPがWWWCやアンテナ等のWeb更新状況確認ツールに
対応していない件についてちょっと説明とその対処法を…
まず、これらのツールはHTTPプロトコルのHEADって命令を使う場合が多いと思います。
これは、そのページに関する情報だけを取得し、ページそのものは
取得しないという特徴があります。
ページ自体を取得しないのでサーバに対する負荷が少なく、
主にリンク先が存在しているか、または更新されているかの確認に利用されます。
以下が一般的なhtmlファイルに対してHEADを実行したときの挙動
up008.png

今回重要なのが、Last-modifiedって項目です。
これが、そのページが最後に更新された日付を表しています。
次に一般的なPHPファイルに対してのHEAD
up009.png

はい、見事にLast-modifiedがありませんね。
これだと最終更新日はわからず、更新前のページをあらかじめアンテナ側で保存しておいてMD5で照合するか、
ファイルサイズ等の比較など効率の悪いことをしなければならないので、
WWWC系ツールはともかく大抵のアンテナは対応していないことでしょう(^^;
ただし、PHPはこのLast-modifiedを出力出来ない訳ではなく出力しないだけなので
設定さえすれば、ちゃんと出力してくれます。
設定方法は簡単で、ページに.htaccessがおいてある人は「php_flag last_modified on」の一行を追加するだけです。
※無い方はtest.txt等のファイルを作成し上記の内容を記述した後にサーバへアップロードして、
 ファイル名を.htaccessとすればよいと思います。
以下がその設定を行ったサーバのPHP側の反応
up010.png

ご覧のようにLast-modifiedが追加されています。
これで大概のアンテナやWWWC系ツールに対応出来るはずです。
Last-modifiedはCGIでは自前で出力しなければならないものですが、
PHPはWebを前提として作られただけあってこういう事も簡単にできるので便利ですね(^^
そのほかにも、ETagやIf-Modified-Since等がありますが、
今のところなくてもあまり不便を感じていないので、
この対策だけやっておけば大丈夫だと思います。