Hot Path – Geschwindigkeits-Optimierung in PHP Frameworks
Luke Lanchester aus Birmingham beschreibt in seinem aktuellen Artikel, wie man große Anwendungen optimieren kann. Anhand eines Beispiels erläutert er, wie man bei besonders häufig angefragten Services aus seinem Framework extrahiert und damit um ein Vielfaches beschleunigen kann. Anstatt bestimmte API-Requests durch das Framework zu lotsen, wird der Endpunkt extrahiert und greift auf einen Caching-Layer zu. Da viele Funktionen des Frameworks nicht benötigt wurden, konnte die Geschwindigkeit von 120 req/s auf 8.000 req/s gesteigert werden. Artikel lesen
All about Middleware
Anthony Ferrara (aka ircmaxell) greift in seinem Blogartikel das aktuelle Standardisierungs-Proposal für Middleware in PSR-7 auf. In einem ausführlichen Beitrag mit vielen Code-Beispielen erläutert Anthony, warum das $response Objekt als Funktionsparameter problematisch ist: Viele Middleware-Implementierungen modifizieren das Response-Objekt bevor dieses an die innere Middleware weitergegeben wird. Dadurch kann können die Änderungen der eigenen Middleware von den folgenden komplett überschrieben werden. Ein besserer Ansatz wäre es laut Anthony, das Response Objekt als Rückgabewert der inneren Middleware zu erhalten anstatt als Funktionsparameter reingereicht zu bekommen. Artikel lesen
Symfony 3.1 Release mit zwei neuen Komponenten
Symfony 3.1 wurde diese Woche released. Die neue Version ist mit 3.0 abwärtskompatibel und kommt mit einigen Änderungen daher:
- Eigene Cache-Komponente nach PSR-6 Standard (Doctrine Cache implementiert nicht das PSR-6 Interface) inkl. vieler Adapter (Doctrine, Array, Filesystem, Redis, Proxy, APCU). Die Dokumentation ist gerade in Arbeit (Github Issue)
- Inflector-Komponente (wurde aus String-Util der PropertyAccess-Komponente) extrahiert. Konvertiert (englischer) Pluralformen zu Singular-Variante. Z.b. babies -> baby
- Sonstiges: Verbesserung an der WebDebug Toolbar, Assets können durch einen Service versioniert werden und mehr (Release Notes)
Über den Tellerand: