Blog
Web制作開発に役立ちそうなTipsや、インターネットに思うことなどを不定期で書いています。
重いphpがタイムアウトしてしまう場合のTips
一般的に公開されているWebでは滅多にない話ではありますが…。
処理にものすごーく、時間の掛かるphpスクリプトが途中でタイムアウトしてしまい、丸一日程無駄にしてしまったので備忘録的にメモしておきます。
【ブラウザにタイムアウトのメッセージが出る場合】
エラーメッセージの内容は
Fatal error: Maximum execution time of 30 seconds exceeded in……
この場合はphp.iniの中のmax_execution_timeの数字を大きな数字にするか、「0(無制限)」にしてしまえばOK。apacheを再起動しましょう。
php.iniが直接いじれない場合は.htaccessに
1 2 | php_value ignore_user_abort On php_value max_execution_time 30000 |
また実行するphpスクリプト内で
1 |
でも今回小生がハマったのは、上記には非ず。エラーのメッセージも出ないまま、いつのまにかブラウザ(Firefox)の画面がホームに設定されているiGoogleになる、というもの。
【ブラウザがタイムアウトのメッセージを出さない場合(Firefox)】
アドレスバーに「about:config」と入力すると、警告メッセージを経て設定一覧が表示されます。
この中の「network.http.keep-alive.timeout」という項目の数字が300(秒)になっていたので30000に変更。今回の問題はこれで回避できました。
【Firefox以外のブラウザでは?】
InternetExolorerの場合はKeepAliveがデフォルトでは120秒とされているそうで、この変更にはレジストリをいじる必要があります。
参考:マイコミジャーナル:【コラム】Windows XPスマートチューニング 98 IEのKeepAliveタイムアウト値を設定する / 阿久津良和様
他のブラウザにも同様の事があったりなかったり?じっくり調べきってはいないのですが、汎用性を高くするには処理結果を都度画面に出力させる方法など、何かしらのデータをこまめに送り続けられる仕組みを組み込むのが良さそうです。
お気軽にお問い合わせください。
お見積りは無料です。