在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>
執行此程式碼時,您會注意到輸出“Caught at shutdown”,因為諸如“允許的記憶體大小耗盡”之類的致命錯誤會終止腳本,導致shutdown 函數捕獲錯誤。
您可以在關閉函數中存取 $error 數組中的錯誤詳細信息,並相應地調整您的回應。例如,您可以將請求重新導向到不同的 URL 或嘗試使用不同的參數處理請求。
雖然使用 register_shutdown_function() 進行錯誤處理可以有效捕獲致命錯誤,但建議將 error_reporting() 設定為高(-1) 並對所有其他錯誤使用 set_error_handler() 和 ErrorException 進行錯誤處理。
以上是如何在 PHP 中優雅地捕捉「允許的記憶體大小耗盡」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!