[simple-way:~] CTO% cat 2009年10月09日15:12.txt
HTTP/1.1では、持続可能な接続を持つことができないクライアントは、リクエストヘッダにConnection: closeを指定しなければならない。
これをしないとサーバーからは切断してくれません。普通のブラウザならコネクション張りっぱなしの方がレスポンスが早くなるけれど、PHPで一部のコンテンツしか取得しない場合は、一回の接続で終了しなければならない。
これがどのようにプログラムへ影響するかというと、オープンしたソケット$fpをwhile (!feof($fp)) {}みたいに待っていると、60秒間固まります。なぜならfeofはソケットのファイルポインタの場合はサーバーからのコネクション切断をもって終端と判断するからなんですね。
これで小1時間ほどハマりました。
[simple-way:~] CTO% []