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 相关文章推荐
Prototype使用指南之base.js
Jan 10 Javascript
THREE.JS入门教程(3)着色器-下
Jan 24 Javascript
关于JS中的闭包浅谈
Aug 23 Javascript
理解JavaScript中Promise的使用
Jan 18 Javascript
微信js-sdk上传与下载图片接口用法示例
Oct 12 Javascript
JavaScript实现格式化字符串函数String.format
Dec 16 Javascript
原生JS和jQuery操作DOM对比总结
Jan 19 Javascript
JavaScript+HTML5实现的日期比较功能示例
Jul 12 Javascript
微信小程序支付PHP代码
Aug 23 Javascript
vue+vue-router转场动画的实例代码
Sep 01 Javascript
vue-cli项目配置多环境的详细操作过程
Oct 30 Javascript
Vuex实现数据增加和删除功能
Nov 11 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
一个图形显示IP的PHP程序代码
2007/10/19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
详解PHP的Yii框架中的Controller控制器
2016/03/29 PHP
javascript innerText和innerHtml应用
2010/01/28 Javascript
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
python实现的解析crontab配置文件代码
2014/06/30 Python
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
python基础教程之Filter使用方法
2017/01/17 Python
python3学生名片管理v2.0版
2018/11/29 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
python内存监控工具memory_profiler和guppy的用法详解
2019/07/29 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
计算机学生求职信范文
2014/01/30 职场文书
《最大的“书”》教学反思
2014/02/14 职场文书
工地宣传标语
2014/06/18 职场文书
护士医德考评自我评价
2015/03/03 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python