PHP での致命的なエラーの安全な処理
PHP のエラー処理機能には、「許可されたメモリ サイズが使い果たされました」などの致命的なエラーの捕捉が含まれます。このエラーは、スクリプトが過剰なメモリを消費すると発生します。メモリ制限を増やす代わりに、カスタム メッセージをユーザーに返すことができます。
1 つの効果的な方法は、 register_shutdown_function() を利用することです。この関数は、error_get_last() をチェックするコールバックを登録します。スクリプトの実行終了後にエラーをチェックすることで、致命的なエラーが発生したかどうかを判断し、適切に処理できます。
実装例を次に示します。
<code class="php">ini_set('display_errors', false); error_reporting(-1); set_error_handler(function($code, $string, $file, $line){ throw new ErrorException($string, null, $code, $file, $line); }); register_shutdown_function(function(){ $error = error_get_last(); if(null !== $error) { echo 'Caught at shutdown'; } }); try { while(true) { $data .= str_repeat('#', PHP_INT_MAX); } } catch(\Exception $exception) { echo 'Caught in try/catch'; }</code>
実行すると、このスクリプトは " を出力します。シャットダウン時にキャッチされました」というメッセージが表示され、シャットダウン関数で致命的なエラーがキャッチされたことを示します。
シャットダウン関数で $error 配列を調べてエラーの原因を特定し、エラーの再発行などの適切なアクションを実行できます。
error_reporting() を高レベル (-1) に保つことが推奨されていますが、他のすべてのエラー処理には set_error_handler() と ErrorException を使用する必要があることに注意することが重要です。スクリプトの実行中に問題が発生するのを防ぐ必要があります。
以上がPHP で致命的なエラーを安全に処理するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。