読者です 読者をやめる 読者になる 読者になる

ところで、とあるPHPのシステム、今までCSVで一覧をダウンロードしていたのですがExcelで欲しいという話になったのでPHP_Excelを使ってファイル生成をするように改修していたのですが、元々データ抽出に時間がかかるリストな処に加えてPHP_Excelでのプロットにも時間がかかる様になって、テスト用に10行打ち切りでプロットするとダウンロードが出来るんだけど、フルに4,000行プロットするとブラウザが途中でタイムアウトしちゃうのですよ。


で問題は、このタイムアウトを誰が出しているのかどうにもワカラネと。
ブラウザの画面は最終的にブラウザのタイムアウト画面が表示されている、のですが、PHPスクリプトタイムアウトしたならブラウザのタイムアウト画面じゃなくてPHP側のErrorが表示されるし、Apacheタイムアウト、と言ってもサーバサイドでPHPがガリガリ動いているのにタイムアウトもナニもないよね?と。

タイムアウトまでの時間を計測すると、3'24、3'26、3'21。200秒+αってことは人為的に設定された数値な気がする、という事で*.iniと*.confから200を検索しても2000しか見つからず。Firefoxが自分でタイムアウトを表示する設定をabout:configで見ると115秒、これもさすがにかけ離れているか‥‥

試しに、httpd-default.confのTimeoutを10秒にして動かしてみると、PHP側で処理をしている限りはブラウザが待機してて、200秒のエラーが出るまではまったくタイムアウトも発生せず。
PHPはコード内でスクリプトタイムアウトを600秒まで延長していて、実際に別のシステムでスクリプトタイムアウトをそのコードで解消出来たので効いているハズだし、他にタイムアウト関係のconfigってないのかと漁ってもさっぱり見つからず‥‥