ホームページ  >  記事  >  バックエンド開発  >  PHP で致命的なエラーを安全に処理するには?

PHP で致命的なエラーを安全に処理するには?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-24 11:49:29176ブラウズ

How to Safely Handle Fatal Errors in PHP?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。