无法使Nginx使用php7-fpm

时间:2019-05-14 18:42:30

标签: php nginx fastcgi

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

  1. 在php中使用这些配置设置:
@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:
 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脚本完成运行,然后立即全部发送。

我要的仍然可行吗?

(我很高兴地建议,还有其他方法可以发送不包含禁用缓冲区的部分结果,但这不属于我的问题)。

1 个答案:

答案 0 :(得分:1)

认为唯一的方法是将初始脚本拆分为多个脚本。

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

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