FrankenPHP und RoadRunner: Moderne App-Server für PHP

FrankenPHP und RoadRunner ersetzen den traditionellen PHP-FPM-Ansatz. Sie führen PHP-Anwendungen als dauerhafte Prozesse aus, die im Speicher bleiben, anstatt sie bei jeder Anfrage neu zu starten. Dieser Architekturwechsel bringt erhebliche Performance-Vorteile, insbesondere für framework-basierte Anwendungen mit hohem Initialisierungsaufwand. Beide Projekte sind Open-Source und können kostenlos genutzt werden.

FrankenPHP

FrankenPHP ist ein in Go geschriebener Application Server, der die PHP-Laufzeitumgebung direkt in den modernen Caddy-Webserver einbettet . Diese enge Integration erlaubt eine einfache Handhabung.

Man sollte beachten, dass FrankenPHP in zwei Modi betrieben werden kann:

  • Klassisch: Funktioniert als Drop-in-Ersatz für PHP-FPM und bietet sofortige Performance-Verbesserungen ohne Codeänderungen .
  • Worker-Modus: Hier bootet die gesamte Anwendung einmal und verbleibt im Speicher. Dies kann die Antwortzeiten laut Benchmarks um das 3,5-fache im Vergleich zu FPM verbessern, da der Framework-Initialisierungsaufwand für jede Anfrage entfällt.

Weitere herausragende Merkmale sind die native Unterstützung für moderne Protokolle wie HTTP/2 und HTTP/3, die automatische Verwaltung von HTTPS-Zertifikaten und die Möglichkeit, Anwendungen als eigenständige, portierbare Binärdateien zu bauen.

RoadRunner: Der leistungsstarke Manager

RoadRunner, ebenfalls in Go implementiert, verfolgt einen anderen Ansatz. Es handelt sich um einen High-Performance Application Server, der persistente PHP-Worker-Prozesse verwaltet . Anstatt PHP selbst einzubetten, startet und überwacht RoadRunner separate PHP-Worker und leitet Anfragen über eine schnelle Brücke an sie weiter.

Seine Stärken liegen in der hervorragenden Integration mit großen Frameworks wie Laravel oder Symfony und einem reichhaltigen Plugin-System, das Aufgaben wie Queue-Verarbeitung, gRPC und das Servieren statischer Dateien abdeckt . Dies macht es besonders geeignet für skalierbare Dienste, APIs und Anwendungen mit hohem Durchsatz.

Die Konfiguration und das Debugging gelten als anspruchsvoller als bei FrankenPHP.

Notwendige Anpassungen

Die Entscheidung für einen persistenten Application Server erfordert Anpassungen an der Architektur. Der größte Unterschied ist der Verlust der Prozessisolation. Während bei FPM jeder Request in einer sauberen Umgebung startet, kann globaler Zustand von einer Anfrage zur nächsten in einem Worker bestehen bleiben. Anwendungen müssen daher sorgfältiger mit globalen Variablen und der Initialisierung von Zuständen umgehen .

Zudem benötigt der Worker-Modus von FrankenPHP eine thread-sichere PHP-Version (ZTS), was die Kompatibilität mit einigen PHP-Erweiterungen einschränken kann. Für maximale Performance sollte der Bootstrap-Code der Anwendung so optimiert werden, dass er problemlos mehrmals in einem persistenten Worker ausgeführt werden kann.

Fazit

Mit FrankenPHP und RoadRunner stehen zwei ausgereifte und leistungsstarke Alternativen zu PHP-FPM zur Verfügung. Beide lösen das Problem des Kaltstarts von PHP-Anwendungen auf elegante Weise und ermöglichen so einen modernen, wettbewerbsfähigen Betrieb.

  • FrankenPHP überzeugt durch seine einfache Integration, den mitgelieferten Caddy-Server und seine raw Performance in Benchmarks.
  • RoadRunner punktet mit seiner Reife, einer breiten Funktionspalette durch Plugins und einer stabilen Architektur für komplexe, skalierbare Dienste.

Die Wahl zwischen ihnen hängt letztlich von den spezifischen Anforderungen des Projekts, der bestehenden Infrastruktur und den Vorlieben des Entwicklungsteams ab.

Abschließend ist es erwähnenswert, dass große Plattformen wie Facebook auf eigene, hochspezialisierte Lösungen wie HHVM und HackHack setzen, während FrankenPHP und RoadRunner diese moderne Architektur als praxistaugliche Werkzeuge für die gesamte PHP-Community bereitstellen.

Bambalam PHP EXE Compiler

Bei Bambalam handelt es sich trotz seines Namens nicht wirklich um einen Compiler. Viel mehr embedded Bambalam PHP und die entsprechenden PHP-Dateien in eine EXE. Der Code wird  immer noch interpretiert. 

Dennoch ist Bambalam eine interessantes Programm,  ermöglicht er doch mit PHP ausführbare Konsolenprogramm zu erstellen. Oft ist es mit PHP möglich schneller zum Ziel zu kommen als mit anderen Programmiersprachen. Es war bisher jedoch nur schlecht möglich diese Programme auf anderen Rechnern auszuführen, da immer eine PHP-Installation vorhanden sein musste. Mit  Bambalam  ist das nicht mehr notwendig. Es können PHP 4 und PHP 5 verwendet werden. Auch ist es möglich  PHP-Erweiterungen einzubinden. Weitere Informationen unter: www.bambalam.se/bamcompile

PHP-Reboot

01.11.2025 - PHP-Reboot ist tot: Diese Alternativen existieren.

PHP-Reboot ist eine an PHP angelehnte Sprache. Sie wird momentan von Rémi Forax für die Java-Virtual Machine implementiert und ist dadurch auf allen Java-Platformen lauffähig. Explizit wird hier Android genannt. PHP-Reboot soll keine eins-zu-eins Umsetzung von PHP werden, der Syntax und  Sprachumfang soll aber ähnelich sein. Die Sprache soll mit weniger Semikolons und $-Zeichen auskommen. PHP kommt mit Derby als integrierte Datenbank und bringt auch einen eigenen Webserver auf Basis von Grizzly. Die Sprache unterstützrt nativ XML und SQL, es werden also keine anderen Tools benötigt um eine Web-Application zu erstellen.

PHP-Reboot kann in einer frühen Version unter code.google.com/p/phpreboot heruntergeladen werden.

Webserver unter Ubuntu einrichten

Die Einrichtung eines Linux-Servers ist keine ganz triviale Aufgabe. Im Folgenden wird beschrieben, wie man Ubuntu 9.10 als Webserver konfiguriert. Dieses Tutorial entstand, weil es unter Ubuntu nicht ohne Weiteres möglich ist, eine funktionierende PHP-Umgebung mit PDO und SQLite zu installieren. Werden die benötigten Module lediglich über apt-get installiert, kommt es zu Versionskonflikten mit SQLite, die sich nur durch manuelles Kompilieren und Anpassungen an den Makefiles beheben lassen. Befolgt man jedoch die hier beschriebenen Schritte, ist dies nicht erforderlich. Offenbar nimmt Tasksel bestimmte Konfigurationsanpassungen vor, die bei einer manuellen Installation mit apt-get nicht automatisch erfolgen.

PHP Fat-Free Framework

Das Fat-Free Framework ist ein interessantes PHP Framework, der große Unterschied zu anderen Frameworks ist das es aus nur einer 55 Kb großen PHP-Datei besteht, so kann es sehr einfach eingebunden werden. Dabei braucht es sich vom Funktionsumfang nicht zu verstecken.  

Das Framework bietet folgende Features:

  • MVC 
  • Template-Engine
  • Form-Handler
  • Command-Line-Mode
  • SQL-Handler
  • ORM
  • Unit Testing

Des weiteren kann es durch Plugins erweitert werden. Leider steht es nur für nicht kommerzielle Nutzung unter der GPL v3. Weitere Informationen unter: fatfree.sourceforge.net

WebServices mit YQL

YQL steht für "Yahoo! Query Language" sie ist eine an SQL angelehnte Sprache bzw. ein von Yahoo gehosteter Webservice der es ermöglicht auf einfache weiße auf zahlreiche Webservices und APIs von Yahoo (und auch einigen anderen Firmen) zuzugreifen.

Eine englischsprachige Einleitung in YQL gibt es unter developer.yahoo.com/yql

Statements kann man unter  developer.yahoo.com/yql/console testen. Ohne einen API-Key dürfen maximal 10.000 Anfragen pro Stunde an den Yahoo-Server gestellt werden.

Propel unter Windows

Propel ist ein Object-Relational Mapper für PHP. Er setzt auf PDO als Datenbank- abstraktionsschicht. Bei der Installation unter Windows kann es zu einigen Schwierigkeiten kommen.

Nachfolgend eine Installations-Anleitung für Propel 1.4 :

  • Starten einer Konsole (Ausführen -> cmd.exe).  
  • Wechseln in das "PEAR"-Verzeichnis unterhalb der PHP-Installation
  • Ausführen der Kommandos:
pear channel-discover pear.phpdb.org
pear install -a phpdb/propel_generator
pear install -a phpdb/propel_runtime
pear channel-discover pear.phing.info
pear install phing/phing-2.3.3 

Es ist zu beachten das explizit die Version 2.3.3 von Phing installiert werden sollte, da es ansonsten zu Fehler kommt.  

wie zum Beispiel:

[phing] Calling Buildfile build-propel.xml with target main
[phing] Error reading project file [wrapped: Unable to open build-propel.xml for reading: ]

Wenn bereits eine andere Version von Phing installiert wurde so kann diese über: pear uninstall -n phing/phing   wieder deinstalliert werden.

PHP-Ext eine PHP-Widget-Bibliothek

PHP-Ext ist eine auf Ext aufsetzente PHP-Bibliothek. Sie ermöglicht das einvache verwenden von den aus Ext bekannten Widgets. Dabei muss kein JavaScript-Code geschrieben werden, der benötigte Code wird automatisch erstellt. Momentan sind noch nicht alle Funktionen von Ext aus PHP-Ext ansprechbar, aber ich gehe davon aus dass diese bald ergänzt werden. PHP-Ext kann bei  php-ext.quimera-solutions.com heruntergeladen werden.

Besseres var_dump für PHP

Jeder der neben PHP schon einmal mit ColdFusion gearbeitet hat wird das Tag <cfdump> aus CF in PHP vermissen. Cfdump ist mir der var_dump-Funktion von PHP vergleichbar, allerdings ist die Darstellung der von PHP Welten voraus. Alle Werte die auf die Cfdump angewendet wird, werden übersichtlich in einer oder mehrere ineinander verschachtelter Tabellen ausgegeben. Dies ermöglicht einen schnellen Überblich ohne dass man sich das ganze Zwecks Einrückung wie in PHP üblich im Quelltext anschauen muss.

In PHP ist es zwar möglich var_dump mit einem vorgestellten <pre>-Tag übersichtlicher zu gestallten, dem ausgereiften Cfdump  kann es aber nicht das Wasser reichen. Das gleiche haben sich auch die Entwickler der PHP-Klasse „dBug“ gedacht. dBug baut die Darstellung von Cfdump bis ins kleinste Detail nach, so können z.B ineinander verschachtele Strukturen per JavaScript ein und ausgeklappt werden. dBug steht unter der GPL und kann unter der Adresse www.dbug.ospinto.com heruntergeladen werden.

Winbinder - Windows GUI-Anwendungen mit PHP entwickeln

Winbinder ist eine natives Windows-Binding und ermöglicht das erstellen von grafischen Windows-Anwendungen in PHP . Neben Windbinder existiert noch eine weitere PHP-Erweiterung die das verspricht, sie heißtPHP GTK und ermöglicht es grafische Anwendungen für Windows, Linux und Mac-OS zu schreiben. Ich halte aber beide Erweiterungen für noch nicht ausgereift. In Winbinder sind noch nicht alle benötigten Funktionen implementiert, die man sonst als selbstverständlich ansieht. So wird „Drag and Drop“ noch nicht vollständig unterstützt. Ein weiteres Problem ist das das Kompilieren der in PHP geschriebenen Anwendungen noch nicht richtig funktioniert, um eine nicht Kompilierte Winbinder-PHP-Anwendung auszuführen muss eine Windbinder Installation vorhanden sein. In diesem Fall werden die PHP-Files direkt interpretiert. Winbinder eignet sich meiner Ansicht nach im momentan Perfekt dafür aus vorhandenem PHP-Code kleine Windows Programme zu erstellen, allerdings muss man dabei einige Einschränkungen in kauf nehmen.