Too Cool for Internet Explorer

PHP Debugger und Profiler


Ich war lange Zeit auf der Suche nach einem guten und freien Profiler für PHP und bin mit dem von Derick Rethans entwickelten xdebug 2 fündig geworden. Im Rahmen des anstehenden Serverumzugs der Web Seite PixelQuelle.de beschäftige ich mich im Moment auch mit der Optimierung der von uns dafür eingesetzten Software und dem Auffinden von Flaschenhälsen. Dazu eignet sich der Profiler von xdebug hervorragend. Dieser kann nämlich Informationen des Profilers im cachegrind kompatiblen Dateiformat erzeugen, welches unter Linux mit dem Programm kcachegrind (siehe Screenshot) bzw. unter Windows mittels wincachegrind visualisiert werden kann. Für jedes Script kann man so ganz genau sehen, welche Funktionen wie, wo und wie oft aufgerufen werden, wieviel Zeit dafür benötigt wird und vieles mehr.

Interessant ist in diesem Zusammenhang auch der Vergleich von Funktionen wie preg_replace und str_replace. Erstere ist zwar sehr viel flexibler, kostet aber bei der Ausführung auch sehr viel mehr Zeit. Oft kann man Scripten auf diese Weise gut optimieren, indem man ein preg_replace durch einen Code-Block mit den Standard String-Funktionen von PHP wie str_replace, substr, etc. ersetzt. Das ist dann zwar mehr Code, kann aber am Ende u.U. um einiges schneller sein als die Lösung mittels preg_replace.

Xdebug ist derzeit noch beta, läuft aber für meine Verhältnisse äußerst stabil. Die Installation gestaltet sich relativ einfach. Entweder man installiert das ganze über PECL, oder man holt sich den Quellcode von xdebug und PHP und compiliert sich xdebug selbst als PHP modul. Auf der Web Seite von xdebug finden sich ausführliche Informationen zur Installation und Konfiguration des Moduls.

Wenn jemand eine Lösung zum Visualisieren der cachegrind Dateien für Mac OS X kennt, der möge sich bitte melden - denn die fehlt mir hier leider noch :-(.



Trackbacks

Keine Trackbacks

Kommentare
Ansicht der Kommentare: (Linear | Verschachtelt)

Noch keine Kommentare

Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA