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中的$(document).ready()与window.onload的区别
Nov 18 Javascript
中文字符串截取的js函数代码
Apr 17 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
May 15 Javascript
JS写的贪吃蛇游戏(个人练习)
Jul 08 Javascript
详细介绍8款超实用JavaScript框架
Oct 25 Javascript
查看大图功能代码jquery版
Nov 05 Javascript
AngularJS实现Input格式化的方法
Nov 07 Javascript
利用Javascript裁剪图片并存储的简单实现
Mar 13 Javascript
React.js绑定this的5种方法(小结)
Jun 05 Javascript
JS实现前端页面的搜索功能
Jun 12 Javascript
javascript中的event loop事件循环详解
Dec 14 Javascript
实例讲解v-if和v-show的区别
Jan 31 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 set_time_limit(0)长连接的实现分析
2010/03/02 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
javascript简单实现图片预加载
2014/12/03 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
2019/06/17 Python
Python笔记之工厂模式
2019/11/20 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
python实现电子词典
2020/03/03 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
XML文档面试题
2015/08/05 面试题
大学毕业的自我鉴定
2013/10/08 职场文书
机关财务管理制度
2014/01/17 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
2015年工程部工作总结
2015/04/30 职场文书
基于Python实现流星雨效果的绘制
2022/03/18 Python