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 相关文章推荐
使用IE的地址栏来辅助调试Web页脚本
Mar 08 Javascript
javascript循环变量注册dom事件 之强大的闭包
Sep 08 Javascript
javascript在IE下trim函数无法使用的解决方法
Sep 12 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
Jan 26 Javascript
JavaScript获取页面中第一个锚定文本的方法
Apr 03 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
Nov 30 Javascript
谈一谈javascript闭包
Jan 28 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
Jul 09 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
Mar 20 Javascript
实例介绍JavaScript中多种组合继承
Jan 20 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
Sep 12 Javascript
vue仿ios列表左划删除
Sep 26 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
西德产收音机
2021/03/01 无线电
php单件模式结合命令链模式使用说明
2008/09/07 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
php 文章调用类代码
2011/08/11 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
短信提示使用 特效
2007/01/19 Javascript
深入理解JavaScript系列(2) 揭秘命名函数表达式
2012/01/15 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
vue-router动态设置页面title的实例讲解
2018/08/30 Javascript
Vue文件配置全局变量的实例
2018/09/06 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
Python lxml模块安装教程
2015/06/02 Python
Python生成随机验证码的两种方法
2015/12/22 Python
详解Python之unittest单元测试代码
2018/01/24 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
浅谈Python爬虫基本套路
2019/03/25 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
增大python字体的方法步骤
2020/07/05 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
Python实现区域填充的示例代码
2021/02/03 Python
优秀管理者获奖感言
2014/02/17 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
80后婚前协议书范本
2014/10/24 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS