Ich habe eine Neuinstallation von CentOS 8 Stream mit Apache und PHP-FPM-Setup unter Verwendung aller Standardeinstellungen (standardmäßig ist dies PHP 7.2.24 FPM/FastCGI).
Meine Anwendung verwendetVom Server gesendete Ereignissemithilfe von JavaScript- EventSource
Objekten. Damit das funktioniert, muss das Apache/FPM-Setup in der Lage sein, Daten an den Client zu senden, wenn diese verfügbar sind (oder zumindest, wenn ein PHP- flush
Aufruf erfolgt).
FPM macht das allerdings nicht. Es gibt alle Daten erst aus, wenn das Skript beendet ist. (Was ich aber nicht will ...)
Wie kann ich PHP-FPM auf Centos8 so konfigurieren, dass es während der Verarbeitung des Skripts Daten löschen kann?
Ich habe versucht, eine Proxy
Direktive hinzuzufügen in /etc/httpd/conf.d/php.conf
:
<Proxy "fcgi://localhost" enablereuse=on flushpackets=on max=10>
</Proxy>
gleich danach </FilesMatch>
, aber das schien nicht zu funktionieren.
Antwort1
Dies ist keine Antwort auf die Frage, sondern ein (vorübergehender) Workaround: Deaktivieren Sie PHP-FPM und wechseln Sie zurück zu mod_php
.
In CentOS 8 ist dies ziemlich einfach. /etc/httpd/conf.modules.d/00-mpm.conf
Entfernen Sie in dieser Zeile das Kommentarzeichen:
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
und kommentieren Sie die Zeile für aus mpm_event
.
Fügen Sie dies dann hinzu zu httpd.conf
:
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
Quelle:https://www.linode.com/docs/guides/how-to-install-apache-web-server-centos-8/