如何使用 PHP-FPM 在 CentOS 8 流中启用流式传输(flush/ob_flush)?

如何使用 PHP-FPM 在 CentOS 8 流中启用流式传输(flush/ob_flush)?

我新安装了 CentOS 8 Stream,其中 Apache 和 PHP-FPM 设置均使用默认设置(默认为 PHP 7.2.24 FPM/FastCGI)。

我的应用程序使用服务器发送事件使用 JavaScriptsEventSource对象。要实现该功能,我需要设置 Apache/FPM,以便在数据可用时(或至少在进行 PHPflush调用时)将数据发送到客户端。

但是,FPM 不会这样做。它只会在脚本完成后立即输出所有数据。(这不是我想要的……)

如何在 Centos8 上配置 PHP-FPM,以便它可以在处理脚本期间刷新数据?

我尝试Proxy在中添加指令/etc/httpd/conf.d/php.conf

<Proxy "fcgi://localhost" enablereuse=on flushpackets=on max=10>
</Proxy>

之后就立即这么做</FilesMatch>,但似乎没有效果。

答案1

这不是问题的答案,而是一个(临时的)解决方法:禁用 PHP-FPM 并切换回mod_php

在 CentOS 8 中,这非常简单,/etc/httpd/conf.modules.d/00-mpm.conf取消注释此行:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

并注释掉 的行mpm_event

然后将其添加到httpd.conf

<IfModule prefork.c>
        StartServers              5
        MinSpareServers           5
        MaxSpareServers           10
        MaxRequestWorkers         150
        MaxConnectionsPerChild    0
</IfModule>

来源:https://www.linode.com/docs/guides/how-to-install-apache-web-server-centos-8/

相关内容