首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让nginx用php7-fpm刷新缓冲区。

无法让nginx用php7-fpm刷新缓冲区。
EN

Stack Overflow用户
提问于 2019-05-14 18:42:30
回答 1查看 127关注 0票数 1

我需要一个长时间运行(7-8秒)的php脚本,以便在找到结果时将部分结果输出给用户。以前,通过执行以下操作,我可以通过使用php和nginx的旧版本来完成这一任务:

  1. 在php中使用这些配置设置:
代码语言:javascript
复制
@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();

  1. 对nginx使用这些指令:
代码语言:javascript
复制
 fastcgi_keep_conn on;
 proxy_buffering off;
 gzip off;

但是,通过升级到PHP 7和nginx 1.10.3,这些设置不再起作用。

我尝试将这些指令添加到nginx中:

代码语言:javascript
复制
 fastcgi_max_temp_file_size 0;
 fastcgi_store off;
 fastcgi_buffering off;

但他们似乎也什么都没做。结果仍然是缓冲的,直到php脚本完成运行,然后立即发送。

我想要的还可以吗?

(我很欣赏有其他方法可以发送不需要禁用缓冲区的部分结果,但这不是我问题的一部分)。

EN

回答 1

Stack Overflow用户

发布于 2019-05-14 18:57:28

如果您可以在多个脚本中拆分初始脚本,那么您可以这样做。

然后,您可以使用ajax从前端调用每个脚本,并将内容附加到dom。

PHP脚本大部分是同步的。但是,通过执行ajax调用(那些运行异步),您可以并行执行多个php脚本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56136660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档