解释:register_shutdown_function

时间:2012-11-21 18:07:06

标签: php

register_shutdown_function做了什么?

我对它的使用及其作用一无所知。 我知道你可以使用它并且很好地适应自定义错误处理程序,但我不知道该通过它,该怎么做,等等。

有人可以用这个编码新手的最简单的术语来解释它吗?

2 个答案:

答案 0 :(得分:30)

这实际上是一个非常简单的功能。所以你有一个PHP脚本:

<?php
  echo "Here is my little script";

  function endScript(){
       echo "My little Script has finished";
  }

  register_shutdown_function('endScript');

?>

基本上会发生什么,你的脚本会运行,当它完成时因为我们添加了这行register_shutdown_function('endScript');,它会调用函数endScript并最终输出My little script has finished

来自documentation

的额外内容
  

在脚本执行完成或调用exit()之后注册要执行的回调。可以对register_shutdown_function()进行多次调用,并且每个调用的顺序与注册时的顺序相同。如果在一个已注册的关闭函数中调用exit(),则处理将完全停止,并且不会调用其他已注册的关闭函数。

*更新

很有用的是当你经常在php中使用名为exit()的函数时。

例如:

<?php 

  function endScript(){
       echo "My little Script has finished";
  }
  register_shutdown_function('endScript');

  $result = some_intricate_function()

  if($result == 0){
     exit();
  } 

  $result = some_other_intricate_function()

  if($result == 0){
     exit();
  }

/* and this keeps reoccurring */
?>

现在请注意,即使您多次调用exit,也不必在每次退出之前调用endScript函数。您在开始时注册了它,现在您知道如果您退出或脚本完成,则调用您的函数。

现在我的关机功能当然没用了;但是如果你需要清理东西(例如,关闭打开文件句柄,保存一些持久数据等),它会变得有用。

答案 1 :(得分:1)

register_shutdown_function注册一个关闭钩子,这是一个在脚本关闭时执行的函数。它将回调函数作为参数,这是要执行的函数。

我建议您查看函数documentation