看了张宴的2011PHP技术高峰论坛演讲ppt,发现fastcgi_finish_request();这函数,顺便了解下其功能特性。
<?php echo '输出内容给用户'; fastcgi_finish_request(); /* 用户访问完成,不会等待下面的操作。*/ echo '测试内容'; sleep(5); //假设一个耗时的处理过程 file_put_contents('/tmp/logs.txt', '记录日志'); ?>
我们会发现页面显示
“输出内容给用户”
而后面的
“测试内容”却没有显示,
但是之后的代码也执行了,因为/tmp/logs.txt也生成了。
由此说明在调用fastcgi_finish_request后,客户端响应就已经结束,但与此同时服务端脚本却继续运行!
合理利用这个特性可以大大提升用户体验。