请注意,截至 php 5.4,此函数仅注册单个回调。将执行最近设置的回调,它们不会像使用 register_shutdown_function() 一样按顺序执行,而只是被覆盖。
这是我的测试
<?php
$i = $j = 0;
header_register_callback(function() use(&$i){ $i+=2; });
header_register_callback(function() use(&$i){ $i+=3; });
register_shutdown_function(function() use(&$j){ $j+=2; });
register_shutdown_function(function() use(&$j){ $j+=3; });
register_shutdown_function(function() use(&$j){ var_dump($j); });
while(!headers_sent()) { echo "<!-- ... flushing ... -->"; }
var_dump(headers_sent(), $i);
exit;
?>
结果
headers_sent() - true
$i = 3
$j = 5