我需要一个长时间运行(7-8秒)的php脚本,以便在找到结果时将部分结果输出给用户。以前,通过执行以下操作,我可以通过使用php和nginx的旧版本来完成这一任务:
@ini_set('output_buffering', 0);
@ini_set('implicit_flush', 1);
@ini_set('zlib.output_compression', 0);
@ob_end_clean();
set_time_limit(0);
header('X-Accel-Buffering: no');并在每次需要输出部分结果时运行ob_implicit_flush(1); flush();。
fastcgi_keep_conn on;
proxy_buffering off;
gzip off;但是,通过升级到PHP 7和nginx 1.10.3,这些设置不再起作用。
我尝试将这些指令添加到nginx中:
fastcgi_max_temp_file_size 0;
fastcgi_store off;
fastcgi_buffering off;但他们似乎也什么都没做。结果仍然是缓冲的,直到php脚本完成运行,然后立即发送。
我想要的还可以吗?
(我很欣赏有其他方法可以发送不需要禁用缓冲区的部分结果,但这不是我问题的一部分)。
发布于 2019-05-14 18:57:28
如果您可以在多个脚本中拆分初始脚本,那么您可以这样做。
然后,您可以使用ajax从前端调用每个脚本,并将内容附加到dom。
PHP脚本大部分是同步的。但是,通过执行ajax调用(那些运行异步),您可以并行执行多个php脚本。
https://stackoverflow.com/questions/56136660
复制相似问题