Mein Variomedia

Hier können Sie sich im Kundenmenü einloggen.




Passwort vergessen?

Weitere Logins

Sie befinden sich hier: variomedia.de > Support > Häufige Fragen (FAQ) > Webanwendungen und Datenbanken > PHP

Fragen und Antworten

Was muss bei der Nutzung von PHP-FPM beachtet werden?

Falls Sie einen Reseller.Dedicated-Server oder ein Pro.Hosting-Paket gebucht haben, können Sie auf Wunsch PHP-FPM nutzen. Dabei ergeben sich einige Besonderheiten, die hier zusammenfassend erläutert werden sollen.

FastCGI-Proxy

Bei der Nutzung von PHP-FPM werden PHP-Prozesse nicht direkt von der Webserver-Software Apache gestartet, sondern durch den zusätzlichen Systemdienst PHP-FPM. Zur Kommunikation zwischen Webserver und PHP-FPM dient das FastCGI-Protokoll, daher wurde der Dienst PHP FastCGI Process Manager oder kurz PHP-FPM genannt. Damit der Webserver eine FastCGI-Verbindung zu PHP-FPM aufbaut, muss eine FastCGI-Proxy-Weiterleitung für PHP-Dateien eingerichtet werden. Dies erfolgt per .htaccess-Konfigurationsdatei mittels folgender Direktiven (ersetzen Sie dabei u12345 durch Ihre Webserver-Benutzerkennung):

<FilesMatch \.php$>
  SetHandler "proxy:unix:/var/run/php-fpm_u12345.sock|fcgi://localhost/"
</FilesMatch>

IPC Socket-Datei

PHP-FPM hält für jeden eingerichteten Benutzer eine Socket-Datei zur Interprozesskommunikation (IPC) bereit (z.B.  /var/run/php-fpm_u12345.sock). Gemäß der Unix-Philosophie "alles ist eine Datei" sind IPC Sockets wie reguläre Dateien ansprechbar, auch wenn sich dahinter keine Datei, sondern ein IPC-Kanal verbirgt. Eine IPC Socket-Datei hat gegenüber anderen IPC-Kanälen wie TCP Sockets (z.B. 127.0.0.1:2000) den Vorteil eines deutlich geringeren Protokoll-Overheads, weiterhin können die erforderlichen Sicherheitsmaßnahmen zur Benutzertrennung einfach über Dateirechte umgesetzt werden.

PHP-Version

Bei PHP-FPM läuft ein eigenständiger Systemdienst für jede verfügbare PHP-Version, daher kann die von PHP-FPM genutzte PHP-Version nicht über das Kundenmenü oder per .htaccess-Datei geändert werden. Für eine Änderung der für PHP-FPM genutzten PHP-Version wenden Sie sich bitte an unsere Kundenbetreuung. Um die Kompatibilität Ihrer Web-Anwendung mit der für PHP-FPM gewünschten PHP-Version sicherzustellen, sollten Sie die gewünschte PHP-Version zunächst im Kundenmenü bzw. per .htaccess-Datei einstellen und PHP-FPM temporär deaktivieren.

Konfugrationseinstellungen und Zusatzmodule

PHP-FPM hält einen Vorrat an stetig laufenden PHP-Prozessen bereit, damit PHP-Scripte schneller gestartet werden können. Da die PHP-Prozesse bereits gestartet sind, können bestimmte PHP-Konfigurationseinstellungen jedoch nicht mehr verändert werden. Dies betrifft insbesondere das Laden von Zusatzmodulen wie den ionCube-Loader oder sicherheitskritische Konfigurationseinstellungen wie allow_url_fopen. Diese Einstellungen können jedoch bei Bedarf in der Systemkonfiguration angepasst werden, wenden Sie sich dazu bitte an unsere Kundenbetreuung. Kleinere Konfigurationsänderungen können über .user.ini-Dateien vorgenommen werden. Diese werden für einen Zeitraum von etwa 5 Minuten zwischengespeichert, so dass sich Konfigurationsänderungen nicht sofort auswirken.

Geschwindigkeitsvorteile

Der Geschwindigkeitsvorteil von PHP-FPM gegenüber dem PHP-CGI-Interpreter resultiert zum größten Teil aus der Nutzung eines sogenannten OpCode-Caches. PHP-Scripte liegen im Regefall im menschenlesbaren Quellcode vor, dieser muss vor der Ausführung in für Computer verständlichen Maschinencode umgewandelt werden. PHP nutzt zur Ausführung eine sogenannte prozessbasierte virtuelle Maschine (Zend Engine), die eine einheitliche Laufzeitumgebung für unterschiedliche Betriebssysteme und CPU-Architekturen bereitstellt. PHP-Scripte werden vor der Ausführung daher zunächst in sogenannte OpCode-Befehle für diese virtuelle Maschine umgewandelt, bevor sie dann von dieser ausgeführt werden. Diese OpCode-Befehle werden normalerweise nach der Ausführung eines PHP-Scripts verworfen, so dass sie für jeden folgenden Aufruf desselben Scripts immer zeitaufwändig neu generiert werden müssen. Mittels eines OpCocde-Caches kann der bereits generierte OpCode zwischengespeichert und für folgende Script-Aufrufe weiter genutzt werden, dies verringert die Ausführungszeit eines PHP-Scripts deutlich. Bei der Nutzung von PHP-FPM ist der PHP-eigene OpCocde-Cache OpCache daher immer aktiviert.

Prozesslimit

Um eine Überlastung des Webservers zu verhindern, ist die Anzahl der gleichzeitig laufenden PHP-FPM-Prozesse beschränkt. Wenn das Prozesslimit überschritten wird, stellt PHP-FPM die nicht mehr ausführbaren Anfragen in eine Warteschlange, wo sie dann der Reihe nach verarbeitet werden, sobald wieder ein PHP-FPM-Prozess frei wird. Dadurch können kurze und geringfügige Überlastsituationen ohne Prozesslimit-Fehler verarbeitet werden.

ErrorDocument 404

Falls Sie über die .htaccess-Direktive ErrorDocument 404 eigene Fehlerseiten eingerichtet haben, greifen diese für nicht exisitierende PHP-Scripte nicht, da die Anfrage vom Webserver an PHP-FPM weitergeleitet wird. Um dies zu verhindern, nutzen Sie bitte in diesem Fall die folgenden .htaccess-Direktiven zur Aktivierung von PHP-FPM (ersetzen Sie dabei u12345 durch Ihre Webserver-Benutzerkennung):

<FilesMatch \.php$>
  <If "-f %{REQUEST_FILENAME}">
    SetHandler "proxy:unix:/var/run/php-fpm_u12345.sock|fcgi://localhost"
  </If>
</FilesMatch>

Links


allow_url_fopen
FastCGI
ionCube
OpCache
PHP-FPM