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代码
Mar 07 Javascript
jquery select下拉框操作的一些说明
Apr 02 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Jul 21 Javascript
js数组方法扩展实现数组统计函数
Apr 09 Javascript
JS随机调用指定函数的方法
Jul 01 Javascript
jQuery实现带水平滑杆的焦点图动画插件
Mar 08 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
May 09 Javascript
vue分类筛选filter方法简单实例
Mar 30 Javascript
小程序封装路由文件和路由方法(5种全解析)
May 26 Javascript
通过vue写一个瀑布流插件代码实例
Sep 07 Javascript
Vue3不支持Filters过滤器的问题
Sep 24 Javascript
Vue Element plus使用方法梳理
Dec 24 Vue.js
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 xml实例 留言本
2009/03/20 PHP
PHP实现递归无限级分类
2015/10/22 PHP
两种php实现图片上传的方法
2016/01/22 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
PHP echo()函数讲解
2019/02/15 PHP
Jquery Ajax请求代码(2)
2011/01/07 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
2017/02/14 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
React中使用Vditor自定义图片详解
2020/12/25 Javascript
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
python飞机大战游戏实例讲解
2020/12/04 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
马来西亚银饰品牌:JEOEL
2017/12/15 全球购物
MySQL面试题
2014/01/12 面试题
报社实习生自荐信
2014/01/24 职场文书
1亿有多大教学反思
2014/05/01 职场文书
北京奥运会口号
2014/06/21 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
浅谈克隆 JavaScript
2021/11/02 Javascript