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 相关文章推荐
网页中表单按回车就自动提交的问题的解决方案
Nov 03 Javascript
jquery制作LED 时钟特效
Feb 01 Javascript
简单谈谈javascript Date类型
Sep 06 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
Jan 23 Javascript
BootStrap创建响应式导航条实例代码
May 31 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
Mar 10 Javascript
基于canvas粒子系统的构建详解
Aug 31 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
Oct 20 Javascript
在 Angular中 使用 Lodash 的方法
Feb 11 Javascript
swiper 自动图片无限轮播实现代码
May 21 Javascript
零基础之Node.js搭建API服务器的详解
Mar 08 Javascript
react合成事件与原生事件的相关理解
May 13 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
php4的session功能评述(三)
2006/10/09 PHP
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
浅谈javascript的调试
2015/01/28 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
node.js的Express服务器基本使用教程
2019/01/09 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
Python实现二维有序数组查找的方法
2016/04/27 Python
使用Flask集成bootstrap的方法
2018/07/24 Python
python实现浪漫的烟花秀
2019/01/30 Python
python将视频转换为全字符视频
2019/04/26 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
元旦联欢会主持词
2014/03/26 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
2014年库房工作总结
2014/11/26 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
离婚案件原告代理词
2015/05/23 职场文书
浅谈如何提高PHP代码质量之单元测试
2021/05/28 PHP
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python