PHP Framework Benchmark 2017

Bei der Wahl eines geeigneten PHP Frameworks sind eine Menge Aspekte zu berücksichtigen. Ein besonders wichtiger Aspekt dabei spielt sicherlich die Performance, denn wie schnell eine Web-Applikation oder ein Portal die Anfragen bearbeitet, wirkt sich auch auf den späteren Erfolg aus.

Um die Performance zu beurteilen, habe ich drei Schwergewichte und ein alternatives Framework einem einfachen Benchmark unterzogen. Folgende Kandidaten gingen ins Rennen:

  • Zend Framework 3.0.3 Skeletion Application
  • Laravel 5.4.16
  • Symfony 3.2.6
  • Flow Framework 4.0.2 Base Distribution

Die Voraussetzungen:
Getestet wurde auf einem zwei Jahre alten Mac-Mini unter Apache 2.4 mit installiertem PHP 7.1. Den Benchmark selbst übernahm das Tool ApacheBench, das unsere Framework-Instanzen mit insgesamt 1000 Requests bombardiert (20 gleichzeitig).

Ergebnisse

Zend Framework 3.0.3 Skeletion Application

Requests pro Sekunde: 155,08
Gesamtzeit des Tests: 6,448 Sekunden

Laravel 5.4.16

Requests pro Sekunde: 108,17
Gesamtzeit des Tests: 9,245 Sekunden

Symfony 3.2.6

Requests pro Sekunde: 119,15
Gesamtzeit des Tests: 8,393 Sekunden

Flow Framework 4.0.2 Base Distribution

Requests pro Sekunde: 3,88
Gesamtzeit des Tests: 257,952 Sekunden

Requests pro Sekunde


(Mehr ist besser)

Gesamtzeit


(Weniger ist besser)

Fazit

Die Unterschiede zwischen den drei Schwergewichten Zend, Symfony und Laravel sind minimal, trotzdem konnte sich das Zend Framework als klarer Sieger durchsetzen.

Das abgeschlagene Flow Framework enttäuschte dagegen auf ganzer Linie. Mit 3,88 Requests pro Sekunde ist das alternative Framework für High-Traffic-Applikationen nicht zu gebrauchen. Schade.

Die Ergebnisse des Benchmarks sind natürlich mit Vorsicht zu genießen. Der Benchmark hat nur die Basis-Installation des jeweiligen Frameworks getestet. Wenn die Frameworks mit vollwertigen und komplexen Applikationen ausgestattet sind, könnten die Ergebnisse schon wieder ganz anders aussehen. Allerdings kann man anhand dieses Benchmarks bereits erkennen, dass sich das Zend Framework, Symfony und Laravel auf einem ähnlichen Level bewegen.

Tools für Entwickler – 3 Jahre später

Vor 3 Jahren schrieb ich einen Artikel darüber, mit welchen Werkzeugen ich als Entwickler arbeite. Heute schreibe ich ein zweites Mal darüber und vergleiche dabei die Werkzeuge von vor 3 Jahren mit denen von heute. Was hat sich geändert, was für Werkzeuge sind dazugekommen und welche verwende ich gar nicht mehr?

» Weiterlesen

RSA Verschlüsselung unter PHP

Vor kurzem habe ich einige Präsentationen über Sicherheit in PHP-Anwendungen gesehen. Ein Thema dabei war, dass die gute alte MD5-Verschlüsselung bei Passwörtern nicht mehr ganz so sicher ist, weil es inzwischen einige einfache Methoden zur „Entschlüsselung“ gibt (z.B. mit Rainbow Tables oder Hash-Datenbanken). Ein erster Lösungsansatz zur Verbesserung der Passwortverschlüsselung ist häufig ein „Salt“ an den MD5-Hash anzuhängen, um es dem Angreifer zumindest zu erschweren. Aus meiner Sicht ist das allerdings mehr ein Workaround als eine wirklich sichere Lösung, daher habe ich nach einer Alternative zu MD5 gesucht und bin bei der RSA-Verschlüsselung hängengeblieben. Da es etwas kniffelig ist, die RSA-Verschlüsselung in einer PHP-Anwendung zu implementieren, gibt es von mir hier ein kleines HowTo. Ihr könnt die Verschlüsselung natürlich nicht nur für Passwörter verwenden, sondern für alle möglichen Daten.

» Weiterlesen