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 相关文章推荐
JS中的this变量的使用介绍
Oct 21 Javascript
javascript文件中引用依赖的js文件的方法
Mar 17 Javascript
jQuery购物网页经典制作案例
Aug 19 Javascript
JavaScript中return用法示例
Nov 29 Javascript
微信小程序 scroll-view隐藏滚动条详解
Jan 16 Javascript
D3.js中强制异步文件读取同步的几种方法
Feb 06 Javascript
js鼠标跟随运动效果
Mar 11 Javascript
Vue监听事件实现计数点击依次增加的方法
Sep 26 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
May 22 Javascript
微信小程序实现图片压缩
Dec 03 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
Jan 04 Javascript
解决vue的touchStart事件及click事件冲突问题
Jul 21 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 session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
php实现微信企业转账功能
2018/10/02 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
2018/04/08 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
初步剖析C语言编程中的结构体
2016/01/16 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
python3 shelve模块的详解
2017/07/08 Python
Django权限机制实现代码详解
2018/02/05 Python
python代码xml转txt实例
2020/03/10 Python
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
anello泰国官方网站:日本流行包包品牌
2019/08/08 全球购物
C语言中break与continue的区别
2012/07/12 面试题
关于爱情的广播稿
2014/01/16 职场文书
建议书的格式
2014/05/12 职场文书
公司领导班子对照材料
2014/08/18 职场文书
毕业证代领委托书
2014/09/26 职场文书
离婚协议书范文
2015/01/26 职场文书
研究生个人学年总结
2015/02/14 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
详解Python函数print用法
2021/06/18 Python