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 相关文章推荐
js下判断 iframe 是否加载完成的完美方法
Oct 26 Javascript
JavaScript实现关键字高亮功能
Nov 12 Javascript
javascript转换日期字符串为Date日期对象的方法
Feb 13 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
Sep 22 Javascript
快速学习JavaScript的6个思维技巧
Oct 13 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
Jan 18 Javascript
JS之相等操作符详解
Sep 13 Javascript
浅谈js算法和流程控制
Dec 29 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
Sep 25 Javascript
layui select 禁止点击的实现方法
Sep 05 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
Nov 02 Javascript
JavaScript实现无限轮播效果
Nov 19 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和ACCESS写聊天室(二)
2006/10/09 PHP
php的access操作类
2008/04/09 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
js的一些常用方法小结
2011/06/29 Javascript
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
小程序实现密码输入框
2020/11/16 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
Python 模块EasyGui详细介绍
2017/02/19 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
Python新手学习标准库模块命名
2020/05/29 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
供应链金融服务方案
2014/05/25 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
政协委员个人总结
2015/03/03 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
2016年元旦致辞
2015/08/01 职场文书
Python 中的Sympy详细使用
2021/08/07 Python