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 相关文章推荐
解析arp病毒背后利用的Javascript技术附解密方法
Aug 06 Javascript
windows8.1+iis8.5下安装node.js开发环境
Dec 12 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
Mar 31 Javascript
JavaScript Function函数类型介绍
Apr 08 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
Jun 09 Javascript
artDialog+plupload实现多文件上传
Jul 19 Javascript
Vue.js教程之计算属性
Nov 11 Javascript
Vue数据驱动模拟实现5
Jan 13 Javascript
简单实现js悬浮导航效果
Feb 05 Javascript
jQuery事件详解
Feb 23 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
Apr 01 Javascript
JavaScript使用canvas绘制随机验证码
Feb 17 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
Http 1.1 Etag 与 Last-Modified提高php效率
2008/01/10 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
javascript 数组排序函数
2009/08/20 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
python实现清屏的方法
2015/04/30 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
python网络应用开发知识点浅析
2019/05/28 Python
python用requests实现http请求代码实例
2019/10/31 Python
Python中求对数方法总结
2020/03/10 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
公司司机岗位职责
2014/02/07 职场文书
生日宴会主持词
2014/03/20 职场文书
实验室的标语
2014/06/20 职场文书
考试保密承诺书
2014/08/30 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
三孔导游词
2015/02/05 职场文书
实操Python爬取觅知网素材图片示例
2021/11/27 Python
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫