Vorstellung von FrankenPHP, einem modernen PHP-Anwendungsserver
Was ist FrankenPHP?
- FrankenPHP ist ein moderner PHP-Anwendungsserver, der in Go geschrieben ist.
- Er unterstützt HTTP/1.1, HTTP/2 und HTTP/3, indem er den offiziellen PHP-Runner in den Caddy-Webserver integriert.
- Er bietet die automatische Erstellung und Erneuerung von HTTPS-Zertifikaten (mit Let’s Encrypt oder ZeroSSL).
Hauptfunktionen
- Mit einem einzigen Befehl lässt sich ein produktionsreifer PHP-Server starten.
- Es können eigenständige Binärdateien erzeugt werden, mit denen sich PHP-Webanwendungen und Kommandozeilen-Tools ohne Abhängigkeiten ausführen lassen.
- Gängige PHP-Erweiterungen (OPcache, XDebug usw.) werden standardmäßig unterstützt.
Leistungssteigerung
- Worker-Modus: Die Anwendung wird einmal gestartet und bleibt dann im Speicher.
- Einfache Nutzung: Wird standardmäßig von Symfony, API Platform, Laravel usw. unterstützt.
- Hohe Geschwindigkeit: Bei API-Platform-Apps 3,5-mal schneller als FPM.
- Effizienz: Nutzt Go-Goroutinen für eine effiziente Performance.
- Einfache Bereitstellung: Läuft als einzelne Binärdatei und benötigt keine externen Dienste.
Vorteile von FrankenPHP
- Einfache und schnelle Einrichtung: Es genügt, PHP-Dateien in das Dokumenten-Root zu kopieren.
- Hohe Leistung: Kombiniert moderne Webserver-Technologien mit einem PHP-Runner für starke Performance.
- Flexibilität: Auch Apps, die nicht mit dem Worker-Modus kompatibel sind, können unverändert betrieben werden.
Meinung von GN⁺
- Interessanter Punkt: FrankenPHP kann die Leistung von PHP-Anwendungen durch den Einsatz moderner Webserver-Technologien deutlich verbessern.
- Zu beachten bei der Einführung: Kompatibilitätsfragen mit bestehenden PHP-Server-Umgebungen sollten vorab geprüft werden.
- Kritische Sicht: Die Einführung neuer Technologien kann mit einer Lernkurve und anfänglichen Einrichtungskosten verbunden sein.
- Empfohlene Alternativen: Auch PHP-Server wie RoadRunner oder Swoole mit ähnlichen Funktionen sind einen Blick wert.
- Vor- und Nachteile der Technologiewahl: Leistungsgewinn und einfache Bereitstellung sind klare Pluspunkte, doch Risiken neuer Technologien und Integrationsfragen mit bestehenden Systemen sollten sorgfältig abgewogen werden.
1 Kommentare
Hacker-News-Kommentare
Ich habe seit 10 Jahren kein PHP mehr entwickelt, aber diese Landingpage hätte mich fast zu PHP zurückgebracht: Design, Farben und Animationen sind sauber, und das Nutzenversprechen wird gut hervorgehoben. Wirkt wie ein guter Weg, um ein kleines Projekt zu starten.
Langjähriger C#-Entwickler, nutzt aktuell hauptsächlich PHP8: PHP8 ist eine großartige Sprache, um Arbeit schnell zu erledigen. Diese Richtung ist besser als LAMP.
Ich frage mich, wie die Ergebnisse in den TechEmpower-Benchmarks ausfallen: Der aktuelle Status ist "nicht abgeschlossen" und liegt ganz unten.
Ich nutze den integrierten Webserver von PHP häufig während der Entwicklung: Er ist langsam, läuft Single-Threaded und ist nicht für Produktionsumgebungen geeignet. FrankenPHP wirkt vielversprechend, aber das Problem begrenzter Kerne/Threads besteht weiterhin. Das Docker-Image sieht vielversprechend aus.
Ich habe FrankenPHP ausprobiert, aber es ist sehr langsam: Die Dokumentation ist unzureichend, und die Leistung bleibt hinter den Erwartungen zurück. Es wird behauptet, 3,5-mal schneller als FPM zu sein, aber in der Praxis erreicht es nicht einmal 1 % dieser Leistung.
FrankenPHP hat Performance-Probleme: Trotzdem ist es ein sehr vielversprechendes Projekt.
Verwandter Link: FrankenPHP, eine Einführung in einen in Go geschriebenen PHP-App-Server.
Wie man einen Docker-Container baut: Erläuterung, wie man mit Docker-Befehlen ein neues Debian in den benötigten Container verwandelt.
WordPress-Benchmark mit FrankenPHP und Apache Mod-PHP ausprobiert: Ich konnte keinen Vorteil von FrankenPHP feststellen. Getestet wurde in Docker; ich müsste noch tiefer einsteigen.
Ich freue mich, dieses Projekt auf der HN-Startseite zu sehen: Es fühlt sich so an, als hätte die nicht mit FPM geteilte Architektur gleichzeitig zum Erfolg von PHP und zu seinen Grenzen beigetragen.