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 相关文章推荐
iis6+javascript Add an Extension File
Jun 13 Javascript
基于Jquery的文字自动截取(提供源代码)
Aug 09 Javascript
input链接页面、打开新网页等等的具体实现
Dec 30 Javascript
深入探究AngularJS框架中Scope对象的超级教程
Jan 04 Javascript
JavaScript String 对象常用方法总结
Apr 28 Javascript
使用Promise链式调用解决多个异步回调的问题
Jan 15 Javascript
bootstrap suggest下拉框使用详解
Apr 10 Javascript
Vue波纹按钮组件制作
Apr 30 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
Sep 28 Javascript
微信小程序按顺序同步执行的两种方式
Dec 20 Javascript
JS字符串和数组如何实现相互转化
Jul 02 Javascript
通过实例解析JavaScript常用排序算法
Sep 02 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 setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
php 冒泡排序 交换排序法
2011/05/10 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
学习php过程中的一些注意点的总结
2013/10/25 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
js对象基础实例分析
2015/01/13 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
python实现连续图文识别
2018/12/18 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
pycharm安装及如何导入numpy
2020/04/03 Python
Python 读取位于包中的数据文件
2020/08/07 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
详解Python模块化编程与装饰器
2021/01/16 Python
英国复古服装购物网站:Collectif
2019/10/30 全球购物
中科软笔试题和面试题
2014/10/07 面试题
军校大学生个人的自我评价
2014/02/17 职场文书
项目合作协议书范本
2014/04/16 职场文书
上课迟到检讨书300字
2014/10/15 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
学校开除通知书
2015/04/25 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python