php register_shutdown_function函数详解

 更新时间:2017年07月23日 23:05:58   作者:北京流浪儿   我要评论
register_shutdown_function() 函数可实现当程序执行完成后执行的函数,其功能为可实现程序执行完成的后续操作,需要的朋友可以参考下

设定错误和异常处理三函数

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发送之后

相关文章

  • Fetch超时设置与终止请求详解

    Fetch超时设置与终止请求详解

    这篇文章主要给大家介绍了关于Fetch超时设置与终止请求的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Fetch具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • 纯JavaScript代码实现移动设备绘图解锁

    纯JavaScript代码实现移动设备绘图解锁

    为了个人信息的安全起见,移动设备上都有个绘图解锁,使用起来非常简单,代码是怎么实现的呢?下面小编给大家介绍js实现移动设备绘图解锁,需要的朋友可以参考下
    2015-10-10
  • Bootstrap轮播图学习使用

    Bootstrap轮播图学习使用

    这篇文章主要为大家详细介绍了Bootstrap轮播图学习使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • 带左右箭头图片轮播的JS代码

    带左右箭头图片轮播的JS代码

    这篇文章主要介绍了带左右箭头图片轮播的JS代码,有需要的朋友可以参考一下
    2013-12-12
  • 不用jQuery实现的动画效果代码

    不用jQuery实现的动画效果代码

    jQuery 框架用的人越来越多了, 无论是性能还是功能强大都不用多说.
    2010-11-11
  • javascript中Object使用详解

    javascript中Object使用详解

    这篇文章主要介绍了javascript中Object使用详解,非常全面详尽,有需要的小伙伴参考下
    2015-01-01
  • 理解javascript函数式编程中的闭包(closure)

    理解javascript函数式编程中的闭包(closure)

    这篇文章主要帮助大家理解javascript函数式编程中的闭包(closure)概念,通俗地讲, JavaScript 中每个的函数都是一个闭包,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 如何在JavaScript中谨慎使用代码注释

    如何在JavaScript中谨慎使用代码注释

    这篇文章主要介绍了如何在JavaScript中谨慎使用代码注释,必要的注释可以阐明实现细节和设计意图,以此节约自己和别人的时间。 然而很多时候注释起的作用却适得其反,,需要的朋友可以参考下
    2019-06-06
  • javascript限制用户只能输汉字中文的方法

    javascript限制用户只能输汉字中文的方法

    这篇文章主要介绍了javascript限制用户只能输汉字中文的方法,实例列举了利用Unicode判断与正则判断两种方法,具有一定的实用价值,需要的朋友可以参考下
    2014-11-11
  • IE中getElementsByName()对有些元素无效的解决方案

    IE中getElementsByName()对有些元素无效的解决方案

    这篇文章主要介绍了IE中getElementsByName()对有些元素无效的解决方案,很简单,很实用,需要的朋友可以参考下
    2014-09-09

最新评论