PHP捕捉异常中断的方法


Posted in Javascript onOctober 24, 2016

前言

任何程序员在开发时都可能遇到过一些失误,或其他原因造成错误的发生。当然,用户如果不愿意或不遵循应用程序的约束,也会在使用时引起一些错误发生。本文主要介绍在php中用 register_shutdown_function进行异常处理的方法,有需要的可以一起学习学习。

实例详解

比如判断一个脚本是否执行完成,可以设置一个属性为 false,在执行完成时设为 true,最后通过 register_shutdown_function 函数指定的方法进行判断,并做进一步异常处理,如代码所示:

class IndexController extends Controller
{
  /**
   * 脚本执行是否完成
   * @var bool
   */
  protected $complete = false;
 
  public function __construct()
  {
    register_shutdown_function([$this, 'shutdown']);
  }
 
  /**
   * 异常处理
   */
  public function shutdown()
  {
    if ($this->complete === false) {
      dump('www.tanteng.me'); //此处应该输出日志并进行异常处理操作
    }
  }
}

这样一来,可以快速定位脚本是否中断,通过 register_shutdown_function 处理异常并提高程序的健壮性,并且可以记录程序中断的状态,方便通过日志快速定位问题。

register_shutdown_function 执行机制

PHP 把要调用的函数调入内存。当页面所有 PHP 语句都执行完成时,再调用此函数。注意,在这个时候从内存中调用,不是从 PHP 页面中调用,所以如果有路径信息,应使用绝对路径,因为 PHP 已经当原来的页面不存在了。就没有什么相对路径可言。

可以这样理解调用条件:

      1、当页面被用户强制停止时

      2、当程序代码运行超时时

      3、当PHP代码执行完成时

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用PHP能有所帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
网页打开自动最大化的js代码
Aug 22 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
Nov 22 Javascript
JS往数组中添加项性能分析
Feb 25 Javascript
javascript中arguments,callee,caller详解
Mar 16 Javascript
利用js编写响应式侧边栏
Sep 17 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
May 20 Javascript
Angular4开发解决跨域问题详解
Aug 28 Javascript
AngularJS实现注册表单验证功能
Oct 16 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
Sep 03 jQuery
Node.js 实现抢票小工具 & 短信通知提醒功能
Oct 22 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
Dec 30 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
Jan 21 Javascript
angularJs关于指令的一些冷门属性详解
Oct 24 #Javascript
浅谈Angular中ngModel的$render
Oct 24 #Javascript
Javascript vue.js表格分页,ajax异步加载数据
Oct 24 #Javascript
H5移动端适配 Flexible方案
Oct 24 #Javascript
javascript的document中的动态添加标签实现方法
Oct 24 #Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
Oct 24 #Javascript
利用JS实现点击按钮后图片自动切换的简单方法
Oct 24 #Javascript
You might like
PHP 全角转半角实现代码
2010/05/16 PHP
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
php工具型代码之印章抠图
2018/07/18 PHP
js window.onload 加载多个函数的方法
2009/11/02 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
详解jQuery事件
2017/01/13 Javascript
jQuery设计思想
2017/03/07 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
Python脚本实现格式化css文件
2015/04/08 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
python3.x实现base64加密和解密
2019/03/28 Python
python list多级排序知识点总结
2019/10/23 Python
Python列表解析操作实例总结
2020/02/26 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
巴西购物网站:Onofre Agora
2020/06/08 全球购物
JSF的标签库有哪些
2012/04/27 面试题
幼儿园园长自我鉴定
2013/10/22 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
考试作弊检讨书范文
2015/01/27 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android