ブラウザから、ウェブサーバに仕込んだ重めの(実行に10分くらいかかる)PHPスクリプトを走らせて、ブラウザの画面に結果を表示させる…というのをたまにやるのだけれど、最近、Firefox(ver.29)経由で件のスクリプトを走らせた時に、結果が表示される前に「接続がタイムアウトしました」とエラーが表示されてしまうようになった。
ウェブサーバ側ではhttp接続やPHP実行時間のタイムアウト設定をかなり余裕を持った値にしているので、サーバ側から接続をぶち切られている訳ではなさそう。その証拠に、Firefoxの画面上に「タイムアウトしました」と表示された後も、サーバ上ではhttpdプロセスが問題なく走り続けているのです。
同じスクリプトをGoogle Chrome経由で走らせてみた時にはタイムアウトは起こらず。Firefoxから接続したら、毎度毎度きっかり5分後に「タイムアウトエラー」。
どうやら、Firefoxに「一定時間レスポンスが返ってこなかったら、こちらから接続を切る」という有難迷惑な機能があるっぽい。
Firefoxの詳細設定を表示させてみる。
- アドレスバーに「about:config」と入力してリターン。
- 「動作保証対象外になります」とか言われるけれど「細心の注意を払って使用する」
で、適当に "http" という文字列を含む値を検索してみると…
network.http.response.timeoutという値が見つかって、これの初期値が "300" つまり 300秒 = 5分 に設定されているのだな。これがブラウザ側でのタイムアウト時間を制御している値に違いない。
なのでこのnetwork.http.response.timeoutの値を "1200" だとか "1800" だとか大きめの値に書き換えて再トライ。
無事にブラウザ側でタイムアウトが起きることなく、サーバからのレスポンスを受け取ることができるようになりましたとさ。
コメント