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 相关文章推荐
VBScript版代码高亮
Jun 26 Javascript
javascript 中对象的继承〔转贴〕
Jan 22 Javascript
jQuery 表单验证扩展(四)
Oct 20 Javascript
js获取事件源及触发该事件的对象
Oct 24 Javascript
7个JS基础知识总结
Mar 05 Javascript
10条建议帮助你创建更好的jQuery插件
May 18 Javascript
详解如何在vue项目中引入elementUI组件
Feb 11 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
May 21 Javascript
小程序获取周围IBeacon设备的方法
Oct 31 Javascript
原生JS实现萤火虫效果
Mar 07 Javascript
JS前后端实现身份证号验证代码解析
Jul 23 Javascript
JS中箭头函数与this的写法和理解
Jan 14 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
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
分享php邮件管理器源码
2016/01/06 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
Laravel下生成验证码的类
2017/11/15 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
基于vue.js快速搭建图书管理平台
2017/10/29 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python 中文乱码问题深入分析
2011/03/13 Python
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
python: 自动安装缺失库文件的方法
2018/10/22 Python
微信公众号token验证失败解决方案
2019/07/22 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
标记环介质访问控制协议
2016/03/27 面试题
linux比较文件内容的命令是什么
2015/09/23 面试题
JAVA程序员自荐书
2014/01/30 职场文书
关于保护环境的建议书
2014/05/13 职场文书
同志主要表现材料
2014/08/21 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
同意报考证明
2015/06/17 职场文书
红白喜事主持词
2015/07/06 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
创业计划书之面包店
2019/09/17 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android