2006-03-08 02:04:16 (水)
PHPスクリプトで、symlinkによるロック処理を行っているが、残ることがある。
Gooのモバイルビューワー(携帯体験機能)
http://mobile.goo.ne.jp/
を、利用すると必ずlock制御が正しく行えない。
スクリプトによるログ保管を行い、ログを参照すると2回アクセスがあることがわかった。
高速で2度実行されているためかと思ってもみたが、lock制御のエラー表示だけであればわかるが
symlinkが残っている。
だとすると?Goo側?
とりあえず、スクリプトがどこまで動作しているかを判断するため、適当なところにログの吐き出し処理を追加。
試してみると、PRINT(ECHO)までは、実行されていた。
やはり、Goo側?
1回目のアクセスでは、データを受け付けない?
とりあえず、PRINT(ECHO)を最後にまとめて出力するように変更!!
PRINT(ECHO)前に、symlinkの削除処理の実行に変更!!
Gooのモバイルビューワー(携帯体験機能)で試してみると、
バッチリ。問題なく動作
−−−−
Gooのモバイルビューワー(携帯体験機能)は、なぜ2回もアクセスしているのだろう?
apacheのアクセスログを調査
その結果。
1回目は、HEAD
2回目は、GET
であった。
−−−−
HEADでは、BODYの取得をしない。
だからなのか?PHPは、PRINT(ECHO)命令で、強制的に中断しているか?
だとすると、PHPの問題?
−−−−
PHP日本語マニュアルで、PRINT(ECHO)を調べてみたが、HEADなどの場合、中断するなどは書かれていない。