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 相关文章推荐
限制复选框最多选择项的实现代码
May 30 Javascript
javascript实现抽奖程序的简单实例
Jun 07 Javascript
浅析Javascript ES6中的原生Promise
Aug 25 Javascript
D3.js实现雷达图的方法详解
Sep 22 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
Apr 22 Javascript
JavaScript实现的超简单计算器功能示例
Dec 23 Javascript
12条写出高质量JS代码的方法
Jan 07 Javascript
微信小程序自定义prompt组件步骤详解
Jun 12 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
Jan 20 Javascript
从理论角度讨论JavaScript闭包
Apr 03 Javascript
详解Vscode中使用Eslint终极配置大全
Nov 08 Javascript
js实现聊天对话框
Feb 08 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 Socket 编程
2010/04/09 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
js实现单行文本向上滚动效果实例代码
2013/11/28 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
script标签属性用type还是language
2015/01/21 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
2015/03/03 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
axios实现文件上传并获取进度
2020/03/25 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
如何进行Linux分区优化
2013/02/12 面试题
Python面试题集
2012/03/08 面试题
教师自我鉴定范文
2013/11/10 职场文书
小区门卫工作职责
2013/12/14 职场文书
课程设计心得体会
2013/12/28 职场文书
青年文明号事迹材料
2014/01/18 职场文书
部门活动策划方案
2014/08/16 职场文书
法定代表人身份证明书
2014/09/10 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang