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).
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 serwer włączamy stronę www. Po czym w katalogu docelowym powinny znajdować się już raporty o nazwach w rodzaju: cachegrind.out.<PID>.
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
