PHPからfsockopenしてHTTPするとき

[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% []

Blog Top

プロフィール
CTO
CTO

  • 1985年7月
    山梨県生まれ

  • 2002年12月
    日本学生科学賞 ソリューション部門 入選1等
    (巨大壁画設計アプリケーションの開発)

  • 2004年4月
    AC入試にて筑波大学第三学群情報学類へ入学

  • 2007年4月
    株式会社シンプルウェイ
    取締役 兼 CTO(最高技術責任者)に就任

  • 2008年3月
    筑波大学第三学群情報学類を無事卒業!!


QRコード
QRCODE