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/