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 相关文章推荐
FCK调用方法..
Dec 21 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
Jun 18 Javascript
自己写了一个展开和收起的多更能型的js效果
Mar 05 Javascript
如何在一个页面显示多个百度地图
Apr 07 Javascript
node.js中的fs.readlink方法使用说明
Dec 17 Javascript
Java中Timer的用法详解
Oct 21 Javascript
jQuery Real Person验证码插件防止表单自动提交
Nov 06 Javascript
JS中的二叉树遍历详解
Mar 18 Javascript
jquery ajax局部加载方法详解(实现代码)
May 12 Javascript
jQuery Masonry瀑布流插件使用方法详解
Jan 18 Javascript
详解Angular2学习笔记之Html属性绑定
Jan 03 Javascript
vue中$refs的用法及作用详解
Apr 24 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
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
JavaScript中闭包之浅析解读(必看篇)
2016/08/25 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
React如何避免重渲染
2018/04/10 Javascript
vue二级菜单导航点击选中事件的方法
2018/09/12 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
JS实现百度搜索框
2021/02/25 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
python生成词云的实现方法(推荐)
2017/06/13 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
七年级地理教学反思
2014/01/26 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
房地产广告词大全
2014/03/19 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
天鹅湖观后感
2015/06/09 职场文书
文明医院的标语集锦!
2019/07/24 职场文书
浅谈redis整数集为什么不能降级
2021/07/25 Redis