PHP で「許可されたメモリ サイズを使い果たしました」エラーを適切にキャッチする
「許可されたメモリ サイズを使い果たしました」エラーなどの致命的なエラーを処理すると、これは、PHP アプリケーションの安定性と使いやすさを確保するために非常に重要です。 ini_set() を使用してメモリ制限を増やすことは迅速な解決策ですが、常に最良のオプションであるとは限りません。
致命的なエラーをより効果的に検出するには、 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 配列内のエラーの詳細にアクセスし、それに応じて応答を調整できます。たとえば、リクエストを別の URL にリダイレクトしたり、別のパラメータを使用してリクエストの処理を試みたりできます。
register_shutdown_function() によるエラー処理は致命的なエラーを検出するのに効果的ですが、error_reporting() を高く設定することをお勧めします。 (-1) し、他のすべてのエラーには set_error_handler() と ErrorException によるエラー処理を使用します。
以上がPHP で「許可されたメモリ サイズが使い果たされました」エラーを適切にキャッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。