php register_shutdown_function函数详解


Posted in Javascript onJuly 23, 2017

设定错误和异常处理三函数

register_shutdown_function(array(‘Debug','fatalError')); //定义PHP程序执行完成后执行的函数
set_error_handler(array(‘Debug','appError')); // 设置一个用户定义的错误处理函数
set_exception_handler(array(‘Debug','appException')); //自定义异常处理。

功能:register_shutdown_function() 函数可实现当程序执行完成后执行的函数,其功能为可实现程序执行完成的后续操作。程序在运行的时候可能存在执行超时,或强制关闭等情况,但这种情况下默认的提示是非常不友好的,如果使用register_shutdown_function()函数捕获异常,就能提供更加友好的错误展示方式,同时可以实现一些功能的后续操作,如执行完成后的临时数据清理,包括临时文件等。

可以这样理解调用条件:

1、当页面被用户强制停止时

2、当程序代码运行超时时

3、当PHP代码执行完成时,代码执行存在异常和错误、警告

example1:

<?php
function test() {
  echo "test()";
}
register_shutdown_function("test");
echo "show: ";

//将输出
show:test()

example2:

<?php
 class ClassDemo {
     public function __construct() {
       register_shutdown_function(array($this, "f"));
     }
  
     public function f() {
       echo "f()";
     }
   }
 
   $demo = new ClassDemo();
   echo "before </br>";

//将输出
before
f()

example3:

<?php
function f($str) {
    echo $str."<br>";
}
 
register_shutdown_function("f","hello");

  class ClassDemo {
    public function __construct() {
      register_shutdown_function(array($this, "f"),"hello");
    }
 
    public function f($str) {
      echo "f():".$str;
    }
  }

$demo = new ClassDemo();
echo "before </br>";

//将输出
before
hello
f():hello

注意事项

1,register_shutdown_function()函数可重复调用,但执行的顺序与注册的顺序相同
2,如果在调用register_shutdown_function()函数之前有exit()函数调用,register_shutdown_function()函数将不能执行
3,PHP4后支持注册函数参数传递
4,在某些服务端,如Apache,当前目录在register_shutdown_function()函数中能够改变
5,register_shutdown_function()函数执行在headers发送之后

Javascript 相关文章推荐
利用js实现遮罩以及弹出可移动登录窗口
Jul 08 Javascript
原生js和jquery中有关透明度设置的相关问题
Jan 08 Javascript
简单的JavaScript互斥锁分享
Feb 02 Javascript
jquery中交替点击事件的实现代码
Feb 14 Javascript
在Ubuntu系统上安装Node.JS的教程
Oct 15 Javascript
Underscore之Array_动力节点Java学院整理
Jul 10 Javascript
在vue项目中安装使用Mint-UI的方法
Dec 27 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
May 21 jQuery
微信小程序实现两边小中间大的轮播效果的示例代码
Dec 07 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
Aug 28 Javascript
layui 数据表格复选框实现单选功能的例子
Sep 19 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
Apr 11 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
Jul 23 #Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
Jul 23 #Javascript
jquery实现下拉菜单的手风琴效果
Jul 23 #jQuery
基于Vue.js实现tab滑块效果
Jul 23 #Javascript
JavaScript判断浏览器和hack滚动条的写法
Jul 23 #Javascript
原生js FileReader对象实现图片上传本地预览效果
Mar 27 #Javascript
JavaScript解析任意形式的json树型结构展示
Jul 23 #Javascript
You might like
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
浅谈laravel orm 中的一对多关系 hasMany
2019/10/21 PHP
求解开jscript.encode代码的asp函数
2007/02/28 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
2016/05/10 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
第一篇初识bootstrap
2016/06/21 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
js指定步长实现单方向匀速运动
2017/07/17 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
JS实现点击掉落特效
2021/01/29 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
浅谈Python反射 &amp; 单例模式
2019/03/21 Python
python实现网站微信登录的示例代码
2019/09/18 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
学python安装的软件总结
2019/10/12 Python
PYTHON绘制雷达图代码实例
2019/10/15 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
新郎新娘婚礼答谢词
2014/01/11 职场文书
银行实习生的自我评价
2014/01/13 职场文书
幼儿教师考核制度
2014/01/25 职场文书
网络优化专员求职信
2014/05/04 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
雷锋电影观后感
2015/06/10 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android