register_shutdown_function 使用及注意事项

该文章根据 CC-BY-4.0 协议发表,转载请遵循该协议。
本文地址:https://fenying.net/post/2014/09/28/usage-of-register_shutdown_function-in-php/

PHP 中的 register_shutdown_function 函数可以用来注册一个“在脚本结束时运行的函数”。

用法很简单:

1<?php
2
3register_shutdown_function('goodbye');
4
5function goodbye() {
6    echo 'goodbye';
7}
8
9# output: goodbye

可以用对象方法:

 1<?php
 2class A {
 3    public k() {
 4        echo __METHOD__;
 5    }
 6}
 7
 8$a = new A;
 9register_shutdown_function([$a, 'k']);
10
11# output: A::k

可以用 PHP 5.3 开始支持的 Lambda 表达式:

1<?php
2
3register_shutdown_function(function() {
4    echo 'goodbye';
5});
6
7
8# output: goodbye

用 PHP 5.3 开始支持的类 __invoke 魔法方法:

 1<?php
 2
 3class A {
 4    public function __invoke() {
 5        echo 'goodbye~';
 6    }
 7}
 8
 9$a = new A;
10register_shutdown_function($a);
11
12# output: goodbye

但是要注意的是:

  1. 当程序由于 exit 和未处理的异常、错误结束时,不会触发该函数。
  2. 可以多次调用该函数注册多个退出函数,执行顺序与注册顺序一致
comments powered by Disqus