php怎么捕获致命错误
程序员文章站
2022-03-17 10:57:50
...
php捕获致命错误的方法:可以利用register_shutdown_function()函数来捕获致命错误。register_shutdown_function()函数表示PHP在程序结束时触发某个函数行为。
利用register_shutdown_function()函数来捕获致命错误,该函数表示 PHP 在程序结束时触发某个函数行为。
(推荐教程:php图文教程)
语法:
void register_shutdown_function(callable $callback[, mixed $parameter [, mixed $... ]])
注册一个 callback ,它会在脚本执行完成或者 exit() 后被调用。
参数:
callback:待注册的中止回调
parameter:可以通过传入额外的参数来将参数传给中止函数
程序结束有四种情况:
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怎么捕获致命错误的详细内容,更多请关注其它相关文章!
上一篇: mysql最新版本是多少
推荐阅读
-
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
-
探讨捕获php错误信息方法的详解
-
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function【转】
-
php异常处理捕获错误整理
-
PHP捕获Fatal error错误的方法
-
北周是怎么灭亡的 只因宇文邕犯了两个致命的错误
-
SpringBoot图文教程15—项目异常怎么办?「跳转404错误页面」「全局异常捕获」
-
cad2008卸载提示致命错误e0434f4dh怎么办?
-
thinkphp3.2在php7下运行,出现错误"系统不支持:mysql"问题怎么解决?
-
web - php实际开发怎么处理错误?