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中的undefined,null,&quot;&quot;,0和false
Mar 08 Javascript
jQuery 性能优化指南 (1)
May 21 Javascript
select 控制网页内容隐藏于显示的实现代码
May 25 Javascript
文本域光标操作的jQuery扩展分享
Mar 10 Javascript
Jquery 在页面加载后执行的几种方式
Mar 14 Javascript
new Date()问题在ie8下面的处理方法
Jul 31 Javascript
三种取消选中单选框radio的方法
Sep 09 Javascript
JavaScript DOM操作表格及样式
Apr 13 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
Sep 18 Javascript
vue实现图片加载完成前的loading组件方法
Feb 05 Javascript
vue+koa2实现session、token登陆状态验证的示例
Aug 30 Javascript
layui.tree组件的使用以及搜索节点功能的实现
Sep 26 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
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
php结合飞信 免费天气预报短信
2009/05/07 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
Yii框架连接mongodb数据库的代码
2016/07/27 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
javascript的BOM汇总
2015/07/16 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
vue监听dom大小改变案例
2020/07/29 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python实现比较两段文本不同之处的方法
2015/05/30 Python
python中如何使用朴素贝叶斯算法
2017/04/06 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
Python如何定义接口和抽象类
2020/07/28 Python
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
社区国庆节活动方案
2014/02/05 职场文书
效能监察建议书
2014/05/19 职场文书
语文教育专业求职信
2014/06/28 职场文书
美术专业自荐信
2014/07/07 职场文书
2015年办税服务厅工作总结
2015/07/23 职场文书
MySQL 自定义变量的概念及特点
2021/05/13 MySQL
Python基础教程,Python入门教程(超详细)
2021/06/24 Python
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android