Ein Entwickler von Teradion, einer Praxisverwaltungssoftware für französische Steuerberatungskanzleien, migrierte eine Symfony-Anwendung von nginx plus PHP-FPM zu FrankenPHP im Worker-Modus. Das Ergebnis — aus dem Gedächtnis, ohne formelle Benchmarks — war eine etwa 20-prozentige Verbesserung, weit entfernt von den auf der FrankenPHP-Homepage beworbenen 3,5-fachen. Die Anwendung ruft hauptsächlich Meldungen und Fristen aus sechs externen Systemen ab.
Bei der Suche nach der Herkunft der 3,5x-Zahl fand der Autor keine veröffentlichte Methodik. Die Benchmarks im Demo-Repository stammen von Oktober 2022, messen Latenz bei geringer Last mit einem Sleep im Skript, enthalten keinen RPS-Wert und zeigen den Classic-Modus sogar langsamer als FPM. Das GitHub-Issue #481 mit der Bitte um reproduzierbare Benchmarks ist seit Januar 2024 offen.
Ein Tideways-Vergleich vom September 2025 relativierte die Erwartungen: Mit veröffentlichter Methodik (Hetzner CCX33, Vegeta) fand er praktisch keinen Performance- oder Durchsatzunterschied zwischen PHP-FPM und FrankenPHP im Classic-Modus. Fazit des Autors: Der Gewinn kommt vom Worker-Modus, der die Anwendung nicht bei jedem Request neu startet — nicht vom Server selbst. Wer nur nginx durch Caddy ersetzt und im Classic-Modus bleibt, migriert umsonst.
Mehrere Stolpersteine kosteten Zeit. Nach der Umstellung hatten viele Dateien die Rechte 0600 — darunter der private JWT-Schlüssel —, was Logins mit 500ern scheitern ließ, ohne dass die Logs etwas zeigten. Eine Runtime-Umgebungsvariable in systemd erforderte doppelte Backslashes in Environment-Direktiven; einzelne werden abgelehnt, und über EnvironmentFile werden sie entfernt — entgegen der offiziellen Dokumentation. Der Worker startete nicht.
Am schlimmsten war State, der zwischen Requests überlebte: Ein Filter blieb aktiv und brach Logins sporadisch. Das ist dokumentiertes Verhalten — FrankenPHP weist darauf hin, dass statischer State per Design persistiert und $_ENV nicht zurückgesetzt wird; Symfony warnt, dass State in Kernel oder Services lecken kann, wenn die Services nicht ResetInterface implementieren. Das Debugging wurde durch PrivateTmp erschwert, das Logs nach /tmp unsichtbar machte, und dadurch, dass getSubscribedEvents kompiliert wird — ein Neustart hilft nicht, erst das Leeren des Caches.
Trotz des bescheidenen Tempogewinns hält der Autor die Migration für lohnend: ein Binary und eine Config statt nginx plus php-fpm, und kein Zertifikatsmanagement mehr. Auch der Tideways-Artikel erwähnt reduzierte Betriebskomplexität. Der Autor fand keine öffentliche Fallstudie mit echten Produktionszahlen und bittet die Community um eigene Erfahrungen.
Kommentare
Noch keine Kommentare — schreib den ersten.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Nichts angekommen? Wirf einen Blick in den Spam-Ordner — und markiere die Mail dort als „Kein Spam“, dann landet sie künftig direkt im Postfach.