Ihre PHP-Website ruckelt? Zeit, unter die Haube zu schauen
Haben Sie schon einmal länger auf das Laden einer Seite gewartet, als Sie Ihren Morgenkaffee zubereiten? Ein bekanntes Gefühl, wenn der Kunde oder Nutzer schreibt: „Die Website läuft langsam.“ Meistens liegt das Problem nicht am „schlechten“ PHP, sondern daran, wie wir seine Möglichkeiten nutzen. PHP ist eine leistungsstarke und flexible Sprache, aber ohne richtige Konfiguration und Profiling kann sie sich in eine „Schildkröte“ verwandeln.
In diesem Artikel werden wir keine langweiligen Vorträge halten. Wir nehmen ein reales Projekt, zerlegen es mit Profilern in seine Einzelteile und zeigen, wie man langsamen Code in blitzschnellen verwandelt. Sie erfahren, was PHP-Leistung ist, wie man sie misst und vor allem, wie man sie verbessert. Los geht's!
Warum kann PHP langsam sein? Mythen und Realität
Viele Entwickler glauben, dass PHP per Definition langsam ist. Das ist ein Mythos. Moderne Versionen (7.4+, 8.x) zeigen hervorragende Ergebnisse. Das Problem liegt meistens in Folgendem:
- Nicht optimierte Schleifen und Datenbankabfragen – der Klassiker.
- Speicherlecks – das Skript verbraucht immer mehr Ressourcen.
- Fehlendes Caching – jedes Mal wird dasselbe neu berechnet.
- Zu viele Includes und Autoloader – das Dateisystem leidet.
Aber bevor Sie blind optimieren, müssen Sie verstehen: Wo genau liegt der Engpass? Dafür gibt es das Profiling.
Was ist PHP-Profiling und warum wird es benötigt?
Profiling ist der Prozess der Datenerfassung über die Arbeit eines Skripts: Ausführungszeit jeder Funktion, Anzahl der Aufrufe, Speicherverbrauch. Es ist wie ein Röntgenbild für Ihren Code. Sie sehen sofort, welche Methode die meisten Ressourcen „frisst“.
Ohne Profiling riskieren Sie, das zu optimieren, was ohnehin gut funktioniert, während das eigentliche Problem unbemerkt bleibt. Daher ist PHP-Profiling der erste Schritt zur Beschleunigung.
Werkzeuge für das Profiling: Vom Einfachen zum Komplexen
Es gibt mehrere Möglichkeiten, in ein PHP-Skript hineinzuschauen. Wir betrachten die drei beliebtesten.
1. Xdebug – der Urvater der Profiler
Xdebug kann nicht nur debuggen, sondern auch profilieren. Es erstellt Cachegrind-Dateien, die in speziellen Programmen (z. B. KCachegrind oder QCachegrind) analysiert werden können.
Installation:
pecl install xdebugKonfiguration in php.ini:
xdebug.mode = profilexdebug.output_dir = /tmp/profilingNach dem Start des Skripts erscheint eine Datei im Ordner /tmp/profiling. Öffnen Sie sie in KCachegrind und sehen Sie den „Aufrufbaum“ mit Ausführungszeiten. Beispielsweise könnten Sie feststellen, dass die Funktion getUserData() 80% der Zeit beansprucht.
2. Blackfire.io – modern und benutzerfreundlich
Blackfire.io ist ein Profiler von SensioLabs (den Erstellern von Symfony). Es funktioniert als PHP-Erweiterung und sammelt Daten in Echtzeit. Pluspunkt: eine schöne Weboberfläche und automatische Empfehlungen.
Installation:
curl -s https://blackfire.io/install.sh | bashDann verbinden Sie sich mit der API und starten das Profiling:
blackfire run php script.phpBlackfire zeigt nicht nur die Zeit, sondern auch die Anzahl der E/A-Operationen, die Speicherzuweisung und sogar SQL-Abfragen an.
3. Eingebaute Funktionen: microtime und memory_get_usage
Wenn Sie schnell einen bestimmten Codeabschnitt überprüfen möchten, ohne schwere Werkzeuge zu installieren, verwenden Sie einfache Funktionen:
$start = microtime(true);// Ihr Code$end = microtime(true);echo "Ausführungszeit: " . ($end - $start) . " Sek";Zur Speichermessung:
echo memory_get_usage() / 1024 . " KB";Das ergibt kein vollständiges Bild, hilft aber, offensichtliche Fehler zu finden.
Wie analysiert man die Profiling-Ergebnisse?
Angenommen, Sie haben ein Profil erhalten. Wonach suchen?
Blogs
Buchempfehlungen
Lesen Sie auch