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 相关文章推荐
javascript Zifa FormValid 0.1表单验证 代码打包下载
Jun 08 Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
Sep 15 Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 Javascript
js绘制圆形和矩形的方法
Aug 05 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
May 31 Javascript
JS简单判断函数是否存在的方法
Feb 13 Javascript
Bootstrap Multiselect 常用组件实现代码
Jul 09 Javascript
浅谈Webpack 持久化缓存实践
Mar 22 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
Nov 11 Javascript
highCharts提示框中显示当前时间的方法
Jan 18 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 jQuery
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
Dec 24 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函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
php代码书写习惯优化小结
2013/06/20 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
php中final关键字用法分析
2016/12/07 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python计算程序运行时间的方法
2014/12/13 Python
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
python基础教程之五种数据类型详解
2017/01/12 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
python中的itertools的使用详解
2020/01/13 Python
python实现磁盘日志清理的示例
2020/11/05 Python
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
数控个人求职信范文
2014/02/03 职场文书
金融事务专业求职信
2014/04/25 职场文书
护理见习报告范文
2014/11/03 职场文书
2015年大学生村官工作总结
2015/04/21 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL