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 相关文章推荐
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
May 24 Javascript
javascript开发技术大全-第3章 js数据类型
Jul 03 Javascript
常用的jQuery前端技巧收集
Dec 24 Javascript
jquery实现左右滑动式轮播图
Mar 02 Javascript
vue.js 初体验之Chrome 插件开发实录
May 13 Javascript
详解在Node.js中发起HTTP请求的5种方法
Jan 10 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 Javascript
Vue实现固定定位图标滑动隐藏效果
May 30 Javascript
ES6 class的应用实例分析
Jun 27 Javascript
微信小程序实现下拉框功能
Jul 16 Javascript
JavaScript交换两个变量方法实例
Nov 25 Javascript
vue引入静态js文件的方法
Jun 20 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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
PHP获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
jQuery 使用手册(二)
2009/09/23 Javascript
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
vue基于mint-ui实现城市选择三级联动
2020/06/30 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
Python collections模块实例讲解
2014/04/07 Python
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
楼面经理岗位职责范本
2014/02/18 职场文书
政治表现评语
2014/05/04 职场文书
数学教师个人总结
2015/02/06 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
医院消毒隔离制度
2015/08/05 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
MyBatis配置文件解析与MyBatis实例演示
2022/04/07 Java/Android