Xdebug - profilowanie aplikacji PHP
19 November 2008
Comments
Xdebug to program do profilowania i debugowania kodu PHP. Od wersji 2.* posiada znacznie więcej opcji i możliwości. Dokumentacja jak i sama aplikacja dostępna jest na stronie projektu www.xdebug.org. Poniżej omówię kilka ciekawszych opcji Xdebug.
Zużycie pamięci
Jeżeli PHP skompilowane zostało z opcją --enable-memory-limit to w xdebug będziemy mieć dostęp do funkcji xdebug_memory_usage() i xdebug_peak_memory_usage(). Pierwsza zwraca (int) ilość zajmowanej pamięci przez wykonujący się właśnie skrypt, druga zwraca największe zużycie pamięci (od początku do momentu wywołania funkcji)<?php
$x = file_get_contents('a.pdf');
echo xdebug_peak_memory_usage()/1048576;
Śledzenie wykonywania się kodu
xdebug_start_trace(string trace_file [, integer options]) - za pomocą tej funkcji uruchamiamy śledzenie wykonywania się kodu. Pierwszy parametr to nazwa pliku, do którego mają być zapisane dane a drugi to albo 0 albo 1 - ustala formatowanie danych, w przypadku 1 dane będą dodatkowo dopisywane do pliku (nie będą nadpisywane istniejące dane.<?php
xdebug_start_trace('a', 0);
$x = file_get_contents('a.pdf');
$x = substr($x, 0, 1000);
$x = base64_encode($x);
xdebug_stop_trace();
TRACE START [2008-11-11 19:04:15] 0.0012 189752 -> define() /srv/http/html/punbb-1.2.20/index.php:27 0.0017 264176 -> require(/srv/http/html/punbb-1.2.20/include/common.php) /srv/http/html/punbb-1.2.20/index.php:28 0.0017 264176 -> defined() /srv/http/html/punbb-1.2.20/include/common.php:32 0.0048 850384 -> require(/srv/http/html/punbb-1.2.20/include/functions.php) /srv/http/html/punbb-1.2.20/include/common.php:37 0.0048 850456 -> function_exists() /srv/http/html/punbb-1.2.20/include/functions.php:653
Profiler Kodu
Wystarczy dodać do php.ini:xdebug.profiler_enable=1 xdebug.extended_info=0 xdebug.remote_enable=0 xdebug.auto_trace=0 xdebug.profiler_output_dir=/ścieżka/do/katalogu
![xdebug](https://rk.edu.pl/site_media/resources/php.rk.edu.pl/images/thumb_xdebug.png)
Instalacja KcacheGrind
Pod MS Windows istnieje "wingrind", lecz jest to stara aplikacja i brakuje jej funkcjonalności dostępnej w KCachegrind jak np. wizualizacja zużycia zasobów przez poszczególne bloki kodu. Pod Linuksem i Uniksami Kcachegrind można zainstalowac z repozytorium, jest to aplikacja wchodząca w skład KDE. Jeżeli nie ma oddzielnego pakietu należy zainstalować pakiet kdesdk.
Dla MS Windows należy użyć instalatora aplikacji KDE4 z winkde.org. Pobieramy instalator i przy instalowaniu pakietów wybieramy kdesdk (oraz opcjonalnie pakiet z tłumaczeniami i graphiz).
W przypadku Mac OS X można skorzystać z pakietów dostępnych w repozytorium Fink, czy też Darwin Ports, lub użyć pakietów z KDE 4 Mac (nie testowałem).
RkBlog
Comment article