Com o Siege instalado, avançamos para a instalação do Xdebug, que além de ser uma ferramenta de debug bastante poderosa, é também uma excelente ferramenta de profiling.
Para instalar o Xdebug, executa-se o seguinte código na consola:
sudo apt-get install php5-xdebug
Agora instalado o Xdebug, é necessário proceder à respectiva configuração editando o ficheiro xdebug.ini
que se encontra em /etc/php5/conf.d/
. Para o fazer basta na consola introduzir o seguinte comando:
sudo nano /etc/php5/conf.d/Xdebug.ini
Existem muitos outros editores de texto em modo de texto, como o Vi, Emacs, etc. Neste caso optei por utilizar o Nano, pela sua simplicidade.
No ficheiro xdebug.ini
insira as linhas que se seguem no seu final:
xdebug.show_mem_delta=On xdebug.trace_format = 0 xdebug.auto_trace = On xdebug.trace_output_dir = /tmp/tests xdebug.trace_output_name = trace.%c.%p xdebug.collect_params = 4 xdebug.collect_includes = On xdebug.collect_return = On xdebug.show_mem_delta = On
Esta configuração, como se pode ver, indica ao Xdebug que deve registar a stacktrace dos erros, define a localização onde deve armazenar os dados, bem como o número de parâmetros a armazenar, entre outras opções que poderão ser aprofundadas no próprio site da ferramenta Xdebug.
Terminando este passo, devemos reiniciar o httpd, neste caso o Apache, com o seguinte comando na consola:
sudo /etc/init.d/apache2 restart
Com todas estas operações concluídas apenas falta instalar uma ferramenta que nos facilite a interpretação gráfica dos dados obtidos pelo Xdebug. Existem várias ferramentas gráficas para o fazer. Neste caso vamos usar o KCachegrind. Esta ferramenta pode ser instalada executando o seguinte comando na consola:
sudo apt-get install kcachegrind
Se preferir utilizar um ambiente web pode utilizar o Webgrind que é bastante semelhante. Existe ainda uma versão para Windows: o WinCacheGrind.
O KCacheGrind permite visualizar e personalizar a forma gráfica de apresentação dos dados de profiling produzidos pelo Xdebug. Desses dados destacam-se os relativos ao consumo de recursos de cada função, de cada ficheiro, de cada método (HTTP POST e GET), de cada ligação à base de dados, e de cada query executada). As funções que se encontrem em ficheiros que sejam chamados por require()
, include()
, require_once()
, também são registados, podendo ser visualizados de forma gráfica, nos respectivos indicadores.
O uso desta ferramenta, dado o seu nível de personalização, é preferível em detrimento do desenvolvimento de uma ferramenta nova que faça o mesmo trabalho, pois seria repetição de trabalho.
Agora bastam apenas alguns minutos para se utilizar o Xdebug em todos os ficheiros, bastando para isso, no código PHP, inserir a linha:
xdebug_start_trace();
Por exemplo:
<?php xdebug_start_trace(); for ($i = 0; $i < 1000; $i++) { echo '<p>Portugal-a-Prograr !</p>'; } xdebug_stop_trace(); ?>
Conclusão
Estas ferramentas e esta técnica permitem testar uma aplicação durante o seu desenvolvimento, evitando assim “dissabores” quando se coloca a aplicação ou website em produção. São 5 minutos que se gastam a configurar o conjunto de ferramentas, o qual não é explorado ao seu limite neste breve artigo, mas são horas que se ganham com a sua utilização, em tempo poupado entre identificação de “engarrafamentos” e sua resolução, tempo que se poupa ao não ter o site ou aplicação offline, e tempo que não se gasta a tentar empurrar as culpas para qualquer outro programa, que não a aplicação que desenvolvemos.
Atenção: o Xdebug é desaconselhado para uso em produção. Para esse efeito, existe uma outra ferramenta (XHProf), esta sim, adequada ao uso em servidores de produção.