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 相关文章推荐
QQ登录简单实现代码
Mar 09 Javascript
JS option location 页面跳转实现代码
Dec 27 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
Jan 12 Javascript
jquery给图片添加鼠标经过时的边框效果
Nov 12 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
Sep 21 Javascript
node.js require() 源码解读
Dec 13 Javascript
JavaScript实现显示函数调用堆栈的方法
Apr 21 Javascript
原生javascript实现的ajax异步封装功能示例
Nov 03 Javascript
用 js 的 selection range 操作选择区域内容和图片
Apr 18 Javascript
Vue2.0+ElementUI实现表格翻页的实例
Oct 23 Javascript
vue项目中使用scss的方法步骤
May 16 Javascript
js+css3实现简单时钟特效
Sep 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
PHP Document 代码注释规范
2009/04/13 PHP
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
Yii框架常见缓存应用实例小结
2019/09/09 PHP
JavaScript 调试器简介
2009/02/21 Javascript
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
JavaScript之appendChild、insertBefore和insertAfter使用说明
2010/12/30 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
jquery中为什么能用$操作
2019/06/18 jQuery
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
js实现轮播图特效
2020/05/28 Javascript
Python学习入门之区块链详解
2017/07/25 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
医院护士的求职信范文
2013/12/26 职场文书
十佳少年事迹材料
2014/12/25 职场文书
小学教师见习总结
2015/06/23 职场文书
小学毕业感言200字
2015/07/30 职场文书
高中地理教学反思
2016/02/19 职场文书
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server