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 相关文章推荐
Display SQL Server Version Information
Jun 21 Javascript
jQuery插件开发基础简单介绍
Jan 07 Javascript
jquery ajax中使用jsonp的限制解决方法
Nov 22 Javascript
Javascript中对象继承的实现小例
May 12 Javascript
Node.js编码规范
Jul 14 Javascript
php常见的页面跳转方法汇总
Apr 15 Javascript
微信分享调用jssdk实例
Jun 08 Javascript
React-Native之定时器Timer的实现代码
Oct 04 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
Dec 29 Javascript
Vue引入Stylus知识点总结
Jan 16 Javascript
jQuery实现聊天对话框
Feb 08 jQuery
vue 出现data-v-xxx的原因及解决
Aug 04 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基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
php实现scws中文分词搜索的方法
2015/12/25 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
Div自动滚动到末尾的代码
2008/10/26 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
vue实现购物车加减
2020/05/30 Javascript
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
对python中数据集划分函数StratifiedShuffleSplit的使用详解
2018/12/11 Python
python Event事件、进程池与线程池、协程解析
2019/10/25 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
html5触摸事件判断滑动方向的实现
2018/06/05 HTML / CSS
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
文秘专业大学生求职信
2013/11/10 职场文书
物理课外活动总结
2014/08/27 职场文书
租赁协议书
2015/01/27 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
Python django中如何使用restful框架
2021/06/23 Python
python turtle绘制多边形和跳跃和改变速度特效
2022/03/16 Python
nginx中封禁ip和允许内网ip访问的实现示例
2022/03/17 Servers
详解Python中*args和**kwargs的使用
2022/04/07 Python