Mit Profilern wird die Leistungsfähigkeit von PHP-Anwendungen analysiert. So lassen sich z. B. SQL-Abfragen in einer Schleife oder ein nicht aktiver Cache schnell aufspüren. Nach einer Einführung und einem Fokus auf Xdebug in Teil 1, konzentrieren wir uns im zweiten Teil auf den PHP Profiler XHProf.
XHProf
Facebook entwickelte einen passiven hierarchischen Profiler namens XHProf, der im März 2009 als Open Source veröffentlicht wurde. Die Datensammlungskomponente wurde komplett in C geschrieben. Dadurch ist sichergestellt, dass sie auch performant ist. XHProf kommt mit einem einfachen in HTML geschrieben GUI daher, in dem alle relevanten Daten dargestellt werden. Dennoch wurde mit XHGui von Mark Story oder der Variante von Paul Reinheimer ein besseres grafisches Interface entwickelt, um die Ergebnisse anzuzeigen und zu verwalten. Die Installation des Profilers bedarf etwas mehr Aufwand als bei Xdebug. Während bis PHP 5.3 für die Installation PECL genutzt werden konnte, muss man ab PHP 5.4 die PHP-Extension selbst kompilieren. Das automatische Aktivieren des Profilings kann z. B. in der .htaccess-Datei oder in der Virtual-Host- bzw. Server-Block-Konfiguration mit auto_prepend_file erfolgen. Im Vergleich zu Xdebug kann man Requests miteinander vergleichen und so besser Optimierungen analysieren. Zusätzlich sind Informationen zum Speicherverbrauch verfügbar, und es gibt eine flache und eine hierarchische Ansicht.
Die Standardinformationen Callees, Callers, Anzahl der Funktionsaufrufe und verbrauchte CPU-Zeit sind mit an Bord. Zusätzlich ist der Speicherverbrauch zu einer Funktion angegeben. Ein Call Graph fehlt hier natürlich auch nicht. Wie bei Xdebug wird die Anzeige von PHP-Fehlern oder Datenbank-Queries nicht unterstützt, und einen Funktionsfilter gibt es nur bei XHGui. Das Aufzeichnen von Browser-Requests, CLI-Skripten oder APIs und individuelles Profiling sind möglich, eigene Extensions oder Monitor Events jedoch nicht. XHProf ist kostenlos und speichert die Daten lokal. Auf dem Produktivsystem kann man diesen Profiler daher gezielt einsetzen.
Die Teile der Profiler-Serie im Überblick
PHP Magazin
Dieser Artikel ist im PHP Magazin erschienen. Das PHP Magazin deckt ein breites Spektrum an Themen ab, die für die erfolgreiche Webentwicklung unerlässlich sind.
Natürlich können Sie das PHP Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Kiosk ist das PHP Magazin weiterhin im Print-Abonnement erhältlich.
Aufmacherbild: tool renovation on grunge wood via Shutterstock / Urheberrecht: Isara Kaenla