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:17stack trace:#0 {main} thrown类型 : 1
网站提示如下-备案平台证书部署正确了但是访问网站提示错误怎么办云南服务器机柜厂家价格买个香港云服务器有啥用处商标补证需要多少钱腾讯云服务器怎么重启云硬盘如何修改域名-域名及账户问题我们这个虚拟主机网站一些玩具产品小视频怎么老是打不开