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 相关文章推荐
让您的菜单不离网站
Oct 03 Javascript
javascript showModalDialog模态对话框使用说明
Dec 31 Javascript
Javascript 网页水印(非图片水印)实现代码
Mar 01 Javascript
jquery获取input表单值的代码
Apr 19 Javascript
基于jquery的关于动态创建DOM元素的问题
Dec 24 Javascript
Angular 4.x中表单Reactive Forms详解
Apr 25 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
Feb 28 Javascript
vue watch深度监听对象实现数据联动效果
Aug 16 Javascript
vue的keep-alive用法技巧
Aug 15 Javascript
vuex存值与取值的实例
Nov 06 Javascript
vue cli3适配所有端方案的实现
Apr 13 Javascript
JavaScript模拟实现网易云轮播效果
Apr 04 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 AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
Yii数据库缓存实例分析
2016/03/29 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
一个javascript图片阅览组件
2010/11/09 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
vue2项目使用sass的示例代码
2017/06/28 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
python2.6.6如何升级到python2.7.14
2018/04/08 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
印尼旅游网站:via
2017/11/12 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
物业管理求职自荐信
2013/09/25 职场文书
暑期社会实践学生的自我评价
2014/01/09 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
单位法定代表人授权委托书
2014/09/20 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
会计工作态度自我评价
2015/03/06 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
学生会部长竞选稿
2015/11/19 职场文书
go goroutine 怎样进行错误处理
2021/07/16 Golang