Wenn die Performance einer Webseite nachgibt, stellt man sich oft die Frage, an welche Funktion/Modul liegt der Performanceverlust? Die Lösung ist das Profiling einer Webseite.
Profiling beschäftigt sich der Analyse der Funktionsaufrufe eine Webseite. Es kann dadurch analysiert werden, welche Teile sehr lange brauchen oder welche Funtionen doppelt aufgerufen werden.
Profiling sollte nicht auf einem Produktivsystem ausgeführt werden, weil die Performance einbricht und Ausgaben sichtbar sind. Übrigends: Wer seine Webseite schneller macht, SEO optimiert gleichzeitig.
Profiling Daten sammeln mit XDebug
Folgende Einstellungen müssen in der php.ini vorgenommen werden:
xdebug.profiler_output_dir = "\xampp\htdocs\webgrind\tmp"
Output File für das Profiling
Es gibt 2 Möglichkeiten des Profiling, entweder alle aufgrufenen Seiten oder nur spezielle mit einem Get-Parameter ?XDEBUG_PROFILE bsp: http://localhost/class.php?XDEBUG_PROFILE
xdebug.profiler_enable_trigger = 1
oder bei allen Seiten, was am Anfang zum testen zu empfehlen ist:
xdebug.profiler_enable = 1
Apache neustarten und eine lockale Datei aufrufen:
http://localhost/test.php
Danach sollte eine Datei im angegeben Verzeichnis angelegt worden sein.
Profiling Daten visualisieren
- download Webgrind
- entpacken nach htdocs/webgrind/
- anlegen einer .htaccess in htdocs/webgrind/ mit Inhalt:
php_flag xdebug.profiler_enable 0, damit webgrind sich ncht selber profiled
- starten von http://localhost/webgrind/
- oben rechts eine Datei aussuchen oder gleich den update Button betätigen
Analyse der angezeigten Daten in Webgrind
Invocation Count: wie oft wurde die Funktion aufgrufen
Total self Cost: Dauer des Durchlaufs der Funktion ohne aufgerufene Unterfunktionen
Total Inclusive Cost: Dauer des Durchlaufs der Funktion mit aufgerufene Unterfunktionen