Profilowanie aplikacji w PHP z wykorzystaniem Xdebug

Xdebug to rozszerzenie do PHP umożliwiające m.in debugowanie i profilowanie aplikacji napisanych właśnie w tym języku. O samej jego instalacji nie ma się co rozpisywać (użytkownikom Arch Linuksa tylko podpowiem, że znajduje się on w AUR), gdyż każda większa dystrybucja powinna mieć Xdebuga wśród swoich pakietów.
Po zainstalowaniu, jeśli nasz system tego nie zrobi za nas, trzeba rozszerzenie wstępnie skonfigurować. Na przykładzie wspomnianego Archa zostaniemy dokładnie poinstruowani co trzeba zrobić:
==> Please add the following lines to your /etc/php/conf.d/xdebug.ini zend_extension=/usr/lib/php/xdebug.so xdebug.remote_enable=on xdebug.remote_host=<ip address> xdebug.remote_port=<port> xdebug.remote_handler=dbgp
Jednakże dla nas ważna jest tylko pierwsza linia tych ustawień, ponieważ pozostałe służą do komunikacji z osobnym klientem. Dlatego też można te linie zakomentować, bądź usunąć. Interesuje nas natomiast włączenie profilowania, co można uskutecznić poprzez dopisanie następujących linii do pliku konfiguracyjnego:
xdebug.profiler_enable=1 xdebug.profiler_output_dir=/tmp
Katalog docelowy jest domyślnie ustawiony na /tmp, więc ta linia tak naprawdę nic nie wnosi, poza tym, żeby było jasno widać jak można ten katalog zmienić.
Następnie restartujemy lokalny serwer http i odpalamy stronę www, której działanie chcemy przeanalizować. W katalogu docelowym (/tmp) powinny znajdować się już raporty o nazwach w rodzaju: cachegrind.out.
Raporty takie można otworzyć za pomocą programów KCacheGrind, WinCacheGrind czy MacCallGrind i wyglądają mniej więcej tak:
Na koniec ostateczny wygląd xdebug.ini:
zend_extension=/usr/lib/php/xdebug.so xdebug.profiler_enable=1 xdebug.profiler_output_dir=/tmp
Brak podobnych wpisów.
Autorzy zdjęć: kentbye





