Profiling mit XDebug und Webgrind


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

  1. download Webgrind
  2. entpacken nach htdocs/webgrind/
  3. anlegen einer .htaccess in htdocs/webgrind/ mit Inhalt:
    php_flag xdebug.profiler_enable 0, damit webgrind sich ncht selber profiled
  1. starten von http://localhost/webgrind/
  2. 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

Hinterlasse eine Antwort

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>