PHP에서 치명적인 오류를 잡는 방법: Register_shutdown_function() 함수를 사용하여 치명적인 오류를 잡을 수 있습니다. Register_shutdown_function() 함수는 PHP가 프로그램 끝에서 특정 함수 동작을 트리거함을 나타냅니다.
Register_shutdown_function() 함수를 사용하면 치명적인 오류를 잡을 수 있습니다. 이는 PHP가 프로그램 끝에서 특정 함수 동작을 트리거한다는 의미입니다.
(추천 튜토리얼: php 그래픽 튜토리얼)
구문:
void register_shutdown_function(callable $callback[, mixed $parameter [, mixed $... ]])
콜백을 등록하세요. 스크립트 실행이 완료된 후 또는 종료() 후에 호출됩니다.
매개변수:
callback: 등록할 중단 콜백
매개변수: 추가 매개변수를 전달하여 매개변수를 중단 함수에 전달할 수 있습니다.
프로그램이 종료되는 상황은 네 가지입니다.
PHP 코드 실행 중 오류가 발생했습니다
PHP 코드가 성공적으로 실행되었습니다
PHP 코드 실행 시간이 초과되었습니다
사용자에 의해 페이지가 강제로 중지되었습니다
(추천 비디오 튜토리얼: 프로그래밍 입문)
예:
동작을 사용자 정의합니다:
<?php /** * Created by PhpStorm. * User: Xavier * Date: 2018/6/3 * Time: 12:16 */ class RegisterShutDownFunction { /** * @author Xavier * @desc php 程序运行结束时候需要运行的函数 */ public static function register() { if ($error = error_get_last()) { // $filename 必须是一个绝对路径 if (!defined('REGISTER_SHUTDOWN_FUNCTION_LOG_FILENAME')) { $filename = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'register_shutdown_function.log'; } else { $filename = REGISTER_SHUTDOWN_FUNCTION_LOG_FILENAME; } $message = '时间 : ' . date('Y-m-d H:i:s') . PHP_EOL; $message .= '文件 : ' . $error['file'] . PHP_EOL; $message .= '行数 : ' . $error['line'] . PHP_EOL; $message .= '错误 : ' . $error['message'] . PHP_EOL; $message .= '类型 : ' . $error['type'] . PHP_EOL . PHP_EOL; file_put_contents($filename, $message, FILE_APPEND); } } }
애플리케이션:
<?php /** * Created by PhpStorm. * User: Xavier * Date: 2018/6/3 * Time: 12:27 */ // 定义一个常量来记录程序停止后,出现错误的 LOG 日志文件 define('REGISTER_SHUTDOWN_FUNCTION_LOG_FILENAME', dirname(__FILE__) . DIRECTORY_SEPARATOR . '11.log'); // 包含异常处理的类文件 include 'lib/RegisterShutDownFunction.php'; $registerShutDownFunction = new RegisterShutDownFunction(); // register_shutdown_function 函数必须在所有的程序执行之间注册 register_shutdown_function(array($registerShutDownFunction, 'register')); // 注册成功之后调用一个不存在的方法 aa(); aa();
오류 로그:
时间 : 2018-06-03 04:56:02 文件 : /Users/x/www/php/exception/2.php 行数 : 17 错误 : Uncaught Error: Call to undefined function aa() in /Users/x/www/php/exception/2.php:17 Stack trace: #0 {main} thrown 类型 : 1
위 내용은 PHP에서 치명적인 오류를 잡는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!