22

做什么register_shutdown_function

我对它的用法和它的作用一无所知。我知道您可以使用它并与自定义错误处理程序很好地配合,但我不知道要通过它,如何处理它等等。

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

4

2 回答 2

41

这实际上是一个非常简单的功能。所以你有一个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

这是文档中的一些额外内容:

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

*更新

它的一个很好的用途是当您经常使用exit()php.ini 中调用的函数时。

例如:

<?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每次都在 exit 之前调用该函数。您在一开始就注册了它,现在您知道如果您退出或脚本完成,那么您的函数就会被调用。

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

于 2012-11-21T18:12:50.500 回答
1

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

我建议您查看该函数的文档

于 2012-11-21T18:10:17.610 回答