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)。

私のアプリケーションはサーバー送信イベントJavaScriptEventSourceオブジェクトを使用します。これを機能させるには、データが利用可能になったとき (または少なくとも PHP の呼び出しが行われたとき) にクライアントにデータを送信できるように Apache/FPM を設定するflush必要があります。

しかし、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/

関連情報