起因是处理web服务器输出一些图片,不想让用户下载,
就希望输出图片后3秒再删除该图片在web服务器上的随机文件。
原本在php6中,ob_flush() 运行良好,不影响前端页面的输出,
但是更新到php7.3-fpm之后,发现,
如果php不执行完,即便使用ob_flush()直接输出页面,浏览器也没有相应,
会一直等到php在后台执行完毕才会显示web页面。
后发现如下方法,让php用ob_flush()输出后,关闭对web-server的连接,
接下来继续处理自己的后继工作,而不会影响web服务器的页面输出。
ob_flush();
flush();
if (function_exists("fastcgi_finish_request")) //前提是用的php-fpm
{
fastcgi_finish_request(); // 上面的php响应完成, 立即返回到前端,关闭到Nginx的连接。
sleep(3);
unlink($the_pic_file)
...
}