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 相关文章推荐
asp批量修改记录的代码
Jun 25 Javascript
javasctipt如何显示几分钟前、几天前等
Apr 30 Javascript
js中键盘事件实例简析
Jan 10 Javascript
JavaScript计算两个日期时间段内日期的方法
Mar 16 Javascript
javascript日期验证之输入日期大于等于当前日期
Dec 13 Javascript
通过npm引用的vue组件使用详解
Mar 02 Javascript
vue watch深度监听对象实现数据联动效果
Aug 16 Javascript
vscode下的vue文件格式化问题
Nov 28 Javascript
微信小程序:数据存储、传值、取值详解
May 07 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
Jul 19 Javascript
js获取图片的base64编码并压缩
Dec 05 Javascript
canvas绘制折线路径动画实现
May 12 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
php中显示数组与对象的实现代码
2011/04/18 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
Python 错误和异常小结
2013/10/09 Python
python实现的文件夹清理程序分享
2014/11/22 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
python之消除前缀重命名的方法
2018/10/21 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
机械设计毕业生自荐信
2014/02/02 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
法院信息化建设方案
2014/05/21 职场文书
教师一帮一活动总结
2014/07/08 职场文书
艺术节开幕词
2015/01/28 职场文书
倡议书格式及范文
2015/04/29 职场文书
现货白银电话营销话术
2015/05/29 职场文书
亮剑精神观后感
2015/06/05 职场文书
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python