PHP에서 치명적인 오류를 안전하게 처리하기
PHP의 오류 처리 기능에는 "허용된 메모리 크기가 소진되었습니다."와 같은 치명적인 오류 포착이 포함됩니다. 이 오류는 스크립트가 과도한 메모리를 소비할 때 발생합니다. 메모리 제한을 늘리는 대신 사용자에게 맞춤 메시지를 반환할 수 있습니다.
한 가지 효과적인 방법은 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'은 종료 함수에서 치명적인 오류가 포착되었음을 나타냅니다.
종료 함수의 $error 배열을 검사하여 오류의 원인을 파악하고, 오류 재발급 등 적절한 조치를 취할 수 있습니다. 다른 매개변수를 사용하여 요청하거나 응답을 반환합니다.
error_reporting()을 높은 수준(-1)으로 유지하는 것이 권장되지만 다른 모든 오류 처리에는 여전히 set_error_handler() 및 ErrorException을 사용해야 한다는 점에 유의하는 것이 중요합니다. 스크립트 실행 중 문제를 방지해야 합니다.
위 내용은 PHP에서 치명적인 오류를 안전하게 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!