<?php
//注册一个会在php中止时执行的回调函数,回调会在脚本执行完成或者exit()后被调用。
function aa()
{
register_shutdown_function('bb');
return 123;
}
function bb()
{
echo 123456;
}
echo aa();
/*输出结果为:
int(123)
123456
*/
//注册其他类的函数,将类与方法名组成一个数组作为一个参数,如果方法需要传参,那么将参数依次放在数组后面
class a
{
public function aa($a,$b)
{
echo $a;
echo $b;
echo 456789;
}
}
function aa()
{
register_shutdown_function([new a,'aa'],'bb','cc');
return 111;
}
/*输出结果为:
'bb'
'cc'
456789
*/
//可以多次调用 register_shutdown_function() ,这些被注册的回调会按照他们注册时的顺序被依次调用。
如果在注册的方法内部调用 exit(), 那么所有处理会被中止,并且其他注册的中止回调也不会再被调用。
function aa()
{
register_shutdown_function([new a,'aa'],'bb','cc');
echo 111;
fastcgi_finish_request();
}
/*输出111后,register_shutdown_function()注册的方法将在后台运行,
fastcgi_finish_request()的作用是将此方法后面的代码在后台运行,此方法仅在linux系统上可用
*/