PHP中使用register_shutdown_function函数截获fatal error示例


Posted in PHP onApril 21, 2015

我们在做项目时,偶尔会因为不谨慎而出现fatal error。如果display_errors设置成off,那用户将会看到的是一个空白的页面。若设置成了on,那fatal error的信息将会呈现出来(当然正常的人都不会这样干)。

那我们有什么方法可以提前截获到fatal error,并用我们自己自定义的友好形式反馈给用户呢。PHP中有一个叫做  register_shutdown_function 的函数,可以让我们设置一个当执行关闭时可以被调用的另一个函数.也就是说当我们的脚本执行完成或意外死掉导致PHP执行即将关闭时,这个函数将会被调用。
下面请看一个例子:

<?php

$flag = false;

function deal_error(){

    global $flag;

    if (!$flag){

        die("粗问题啦,请稍后再试");

    }

    return false;

}

register_shutdown_function("deal_error");

//将因为致命错误而失败

//$obj = new NotExistClass(); //引入未定义的类

require('./test.php');

$flag = true;

我们在程序入口处,设置flag为false,最后设置成true,表明程序正常执行。若flag最后不为true,说明在中间某个地方死掉了,此时就会调用register_shutdown_function,输出我们自定义的错误结果。

如上面的类未定义、引入不存在的文件(必须使用require或require_once)等会导致fatal error。当然,要是你程序是缺个标点或者多了个特殊字符啥的,那就没办法了。

PHP 相关文章推荐
php xfocus防注入资料
Apr 27 PHP
五个PHP程序员工具
May 26 PHP
深入php-fpm的两种进程管理模式详解
Jun 03 PHP
php实现cc攻击防御和防止快速刷新页面示例
Feb 13 PHP
Codeigniter实现智能裁剪图片的方法
Jun 12 PHP
新浪微博OAuth认证和储存的主要过程详解
Mar 27 PHP
PHP滚动日志的代码实现
Jun 10 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
PHP中16个高危函数整理
Sep 19 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 #PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 #PHP
PHP使用递归生成文章树
Apr 21 #PHP
php实现的美国50个州选择列表实例
Apr 20 #PHP
PHP也能干大事之PHP中的编码解码详解
Apr 20 #PHP
php中使用base HTTP验证的方法
Apr 20 #PHP
PHP加密解密类实例分析
Apr 20 #PHP
You might like
虫族 Zerg 热键控制
2020/03/14 星际争霸
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
PHP7 windows支持
2021/03/09 PHP
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
JQuery选择器特辑 详细小结
2012/05/14 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
Python脚本后台运行的几种方式
2015/03/09 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
JQuery学习总结【二】
2016/12/01 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
对angular 监控数据模型变化的事件方法$watch详解
2018/10/09 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
python tkinter实现屏保程序
2019/07/30 Python
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
城市轨道专业个人求职信范文
2013/09/23 职场文书
领导干部廉政自律承诺书
2014/05/26 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
婚庆答谢词大全
2015/09/29 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书