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 相关文章推荐
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
Sep 25 Javascript
JS控制层作圆周运动的方法
Jun 20 Javascript
js实现图片加载淡入淡出效果
Apr 07 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
Apr 11 Javascript
vuejs2.0子组件改变父组件的数据实例
May 10 Javascript
Vue2.0设置全局样式(less/sass和css)
Nov 18 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
Dec 13 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
Jan 16 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
Sep 26 Javascript
浅谈Angular7 项目开发总结
Dec 19 Javascript
vue treeselect获取当前选中项的label实例
Aug 31 Javascript
jquery插件实现图片悬浮
Apr 16 jQuery
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
解析link_mysql的php版
2013/06/30 PHP
PHP中的Memcache详解
2014/04/05 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
2017/01/04 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
Ionic2调用本地SQlite实例
2017/04/22 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
JavaScript 中的六种循环方法
2021/01/06 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
Python正则捕获操作示例
2017/08/19 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
python程序输出无内容的解决方式
2020/04/09 Python
Python pip使用超时问题解决方案
2020/08/03 Python
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
工商管理专业职业生涯规划
2014/01/01 职场文书
2015年医务科工作总结范文
2015/05/26 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
学生会工作感言
2015/08/07 职场文书