質問: PHPでMySQLに接続し致命的なエラーが発生した時の処理方法を教えてください。 MySQLに接続後、一定時間が過ぎると以下のエラーメッセージが表示されます。 (1)このメッセージを表示させずにエラー処理をする最適と思われる方法(トップページへ転送するなど)を教えてください。set_time_limitなどで処理時間を調整して解決する方法は考えていません。 (2)致命的なエラーには一般的にどのような処理をするべきなのか教えてください。 エラーメッセージ Fatal error: Maximum execution time of 60 seconds exceeded in ... Linux、Windows PHP 5.2.5 MySQL 5.1.22-rc MySQL の文字コード: UTF-8
回答: > > (1)このメッセージを表示させずにエラー処理をする最適と思われる方法 > > > ご承知のように、それは実行時タイムアウトエラー(1つのスクリプトの処理に60秒以上かかっている)です。 対症療法として処理の分割を実施するか、処理の最適化を目指すのが定石です。 たいていの場合、異常に処理時間がかかっている繰り返し処理が1カ所あるはずです。その部分を特定し、ループを分解するか、処理の最適化を試みます。 > > (2)致命的なエラーには一般的にどのような処理をするべきなのか教えてください。 > > > 1. プログラムの停止(異常終了させて暴走を止める)⇒PHPエンジンに任せる 2. エラー発生時のログの吐き出し⇒set_error_handler, set_exception_handlerを利用し、エラー発生後の処理を記述 3. 管理者への通知(アラートメッセージやメールによる)⇒error_logを利用 #### 参考サイト * エラー処理設計 * PHPのエラー処理およびログ記録関数