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 相关文章推荐
有一段有意思的代码-javascript现实多行信息
Aug 26 Javascript
js 时间格式与时间戳的相互转换示例代码
Dec 25 Javascript
jquery选择器之层级过滤选择器详解
Jan 27 Javascript
纯js实现遮罩层效果原理分析
May 27 Javascript
JavaScript中使用document.write向页面输出内容实例
Oct 16 Javascript
node.js中的events.emitter.listeners方法使用说明
Dec 10 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
Jan 13 Javascript
JavaScript将数组转换成CSV格式的方法
Mar 19 Javascript
JavaScript Array对象详解
Mar 01 Javascript
详解利用Angular实现多团队模块化SPA开发框架
Nov 27 Javascript
详解Vue内部怎样处理props选项的多种写法
Nov 06 Javascript
深入解读Node.js中的koa源码
Jun 17 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
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
我的论坛源代码(六)
2006/10/09 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
php读取XML的常见方法实例总结
2017/04/25 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
2015/09/04 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
python绘图方法实例入门
2015/05/19 Python
python清理子进程机制剖析
2017/11/23 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
Python里面search()和match()的区别
2016/09/21 面试题
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
成考报名单位证明范本
2014/01/16 职场文书
机关保密承诺书
2014/06/03 职场文书
语文教研活动总结
2014/07/02 职场文书
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
诚信教育主题班会
2015/08/13 职场文书
详解PyTorch模型保存与加载
2022/04/28 Python