Speicherbedarf von PHP Skripten mit XDebug analysieren

Nutzt man XDebug bereits für das Debugging von PHP Skripten, dann lässt sich mit weiteren Tools auch der Speicherbedarf von PHP Skripten ermitteln. Wichtig ist zunächst, dass XDebug bereits installiert und mit PHP zusammenarbeitet (siehe auch XDebug Installation unter Mac OS X).

Zudem sollte man prüfen, ob in der verwendeten php.ini die folgenden Zeilen zu finden sind:

; Tracing
xdebug.auto_trace=On
xdebug.show_mem_delta=On
xdebug.collect_return=On
xdebug.trace_output_dir= /tmp/
xdebug.trace_format=1
xdebug.trace_enable_trigger=1

; Profiler
xdebug.profiler_enable=1
xdebug.profiler_output_dir=/tmp

Durch diese Einstellungen werden die XDebug trace-Dateien in das Systemverzeichnis /tmp/ geschrieben, sobald eine XDebug Session gestartet wurde. Starten lässt sich eine solche Session wie gewohnt über den GET Parameter XDEBUG_SESSION_START.

Um diese Dateien nun auslesen zu können bzw. nach bestimmten Daten zu durchsuchen, gibt es verschiedene Möglichkeiten (wobei ich zu den Vor- bzw. Nachteilen noch nix sagen kann – hier muss erst etwas rumprobiert werden):

xdebug-trace-gui

Ein PHP-Skript namens xdebug-trace-gui (von Thomas Hambach). Die Verwendung ist recht simpel:

  1. Dateien von GitHub laden und in ein Serververzeichnis speichern
  2. Verzeichnis über den Browser aufrufen
  3. eine der vorgegebenen GUIs auswählen und die trace Dateien durchsuchen

tracefile-analyser

Ein weiteres PHP-Skript, welches bereits mit der Installation von XDebug geladen wird (und auch auf GitHub geladen werden kann) nennt sich tracefile-analyser.

Dieses Skript funktioniert ähnlich der vorangegangenen Variante, wobei dieses Skript über die Konsole aufrufen wird:

php -f tracefile-analyser.php /tmp/trace.2043925204.xt memory-own 20

Gefunden auf geek.michaelgrace.org.

webgrind

Ein weiteres schönes Tool zum Analysieren von Skriptaufrufen ist webgrind. Der Nachteil ist allerdings, dass hier nicht der Speicherbedarf, sondern die Ausführungszeit ausgegeben wird.

Vorteile sind die schnelle Installation und die Möglichkeit, einen Funktionsplan zu erstellen (siehe nachstehende Grafik).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.