PHP側の実行時間制限は非セーフモード環境下では関数「set_time_limit」で設定できます。

今度はウェブブラウザ側のHTTP接続時間制限を考慮する必要があります。



Internet Explorerに関しては、以下のドキュメントが参考になります。Internet Explorer エラー「接続がタイムアウトしました」がいつサーバー応答しません。 @ support.microsoft.com

タイムアウト期限 ブラウザのバージョン
5 分 Internet Explorer 4.0 および Internet Explorer 4.01
60 分 Internet Explorer 5およびInternet Explorer 6
60 分 Internet Explorer 7 および Internet Explorer 8

Safariは60秒のようです。Safari FAQ > 10. Safariはどのようにしてサーバのタイムアウトを処理しているのですか? @ developer.apple.com

Firefoxではそのような設定は見つかりませんでした。Mozilla networking preferences > HTTP @ developer.mozilla.org

さっとググって見た限り、HTTP1.1のKeep Alive設定を変更するようなものが多く見つかりました。個人的には、ブラウザのリクエストタイムアウトとHTTP通信におけるKeep-Alive設定は別なものじゃないのかなと思ったりしてます。

Keep-AliveとInternet Explorerに関しては以下。
Internet Explorer のデフォルトの Keep-Alive タイムアウト値を変更する方法 @ support.microsoft.com

おそらくFirefoxでは、Keep-aliveを短めにして、一回のコネクションとkeep-aliveの持続時間を同じように扱っているのかと。昔と比べると1つのウェブページが要求するHTTP通信が非常に多くなったので、こういう実装になっているのかなぁと思いました。(となると、リクエストタイムアウトはIEなどブラウザベンダーの独自拡張になる?)

各社こんな感じなので、ブラウザのタイムアウト防止のために、実行時間が長くなることが予想されるPHPスクリプトは、スクリプト側で関数「flush」や関数「ob_flush」を実装して、適当にブラウザ向けにパケット送出してあげる必要ありかなと、今書いてて思いました。NP_Thumbnailの次期バージョン(ver.4.0.0かな?)で実装することにします。

# Microsoftは情報がちゃんと整理されていていいなぁ。