Damit Änderungen der PHP-Konfiguration wirksam werden, muss man den Apache-Server mit »mod_php
«
neustarten. Die gerade aktiven Benutzer erleben dann einen Verbindungsabbruch nebst einer Fehlermeldung. Anders bei PHP-FPM: Dort kann man die Konfiguration im laufenden Betrieb ändern. Das ist besonders nützlich, wenn man schnell die Anzahl der Interpreter-Prozesse in einem Pool hochschrauben oder weitere Pools hinzufügen möchte. PHP-FPM startet dann für neu eingehende Anfragen neue Prozesse mit der aktualisierten Konfiguration. Die noch laufenden alten Anfragen arbeiten die entsprechenden Prozesse noch ab, bevor PHP-FPM sie beendet. Einen solchen graceful Restart leitet
/etc/init.d/php5-fpm reload
ein. Das bereits erwähnte:
/etc/init.d/php5-fpm restart
löst hingegen einen herkömmlichen Neustart aus.
Die von einem Pool bearbeiteten Anfragen kann PHP-FPM zu Diagnosezwecken aufzeichnen. Dazu ergänzt man in der entsprechenden Konfigurationsdatei des Pools (wie der aus Listing 1) die Zeile:
access.log = /var/log/$pool.access.log
Nach dem Gleichheitszeichen folgt der Name der Log-Datei. Den Platzhalter »$pool
«
ersetzt PHP-FPM gegen den Namen des Pools. Standardmäßig landen im Protokoll die IP-Adresse, der Benutzername, die (Server-)Zeit, die Request-Methode, die angefragte Adresse (URI) und der zurückgelieferte Status-Code. PHP-FPM kann zusätzlich aber auch die viel interessantere Ausführungszeit, die benötigte Prozessor-Belastung und den Query-String protokollieren. Man sollte deshalb gleich mit der zusätzlichen Zeile:
access.format = "%R - %u %t \"%m %r%Q%q\"%s %f %{mili}d %{kilo}M %C%%"
alle wichtigen Informationen zusammenstellen lassen (Abbildung 6). Wie ihr kryptischer Aufbau schon andeutet, kann man sich den Aufbau des Protokolls wie in Apache selbst zusammensetzen, die Buchstaben sind dabei Platzhalter für verschiedene Informationen. Welcher Platzhalter für welche Information steht, verraten die Kommentare in der mitgelieferten Beispiel-Datei.