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的deferred对象使用详解
Aug 20 Javascript
javascript的数据类型、字面量、变量介绍
May 23 Javascript
javascript 兼容所有浏览器的DOM扩展功能
Aug 01 Javascript
js 自带的 map() 方法全面了解
Aug 16 Javascript
在JSP中如何实现MD5加密的方法
Nov 02 Javascript
Vue.JS入门教程之处理表单
Dec 01 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
May 27 Javascript
详解AngularJS 过滤器的使用
Jun 02 Javascript
详解封装基础的angular4的request请求方法
Jun 05 Javascript
微信小程序如何获取群聊的openGid以及名称详解
Jul 17 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 Javascript
使用原生javascript开发计算器实例代码
Feb 21 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中chdir()函数用法实例
2014/11/13 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
自定义Vue组件打包、发布到npm及使用教程
2019/05/22 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
python中readline判断文件读取结束的方法
2014/11/08 Python
python清除字符串里非数字字符的方法
2015/07/02 Python
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
Python入门_浅谈for循环、while循环
2017/05/16 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
提升python处理速度原理及方法实例
2019/12/25 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
Python如何在bool函数中取值
2020/09/21 Python
详解Django中异步任务之django-celery
2020/11/05 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
美国正版电视节目和电影在线观看:Hulu
2018/05/24 全球购物
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
女性时尚网购:Chic Me
2019/07/30 全球购物
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
开业庆典答谢词
2014/01/18 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
基于PyQt5制作一个群发邮件工具
2022/04/08 Python