Esse é um assunto recorrente entre os devs de todas as linguagens, como saber se a sua aplicação está ou não consumindo mais recursos do que deveria? Posso responder em uma palavra: Profiling.
O que é profiling
Profile é perfil em inglês, quando uma palavra termina em ing, é o ato de fazer aquilo, (desculpem a explicação, inglês não é meu forte), profiling pode ser algo como geração de perfil. Essa geração de perfil é feita por um profiler e existem alguns mais indicados para produção e outros para desenvolvimento, o Xdebug seria mais para desenvolvimento, embora eu use vez ou outra em produção (ligo e desligo - não façam isso em casa), mas estou adiantando o assunto.
Gerar um perfil é ver quais comandos sua aplicação executa, quando, durante quanto tempo e os recursos que precisou pra isso.
Gostou deste artigo?
Receba atualizações semanais com novos artigos do WebDevBr e outras dicas!
Vamos conhecer meu profiler favorito?
Profiling com Xdebug
Antes de começar você precisa ter o Xdebug instalado e configurado, você pode fazer isso seguindo este artigo: Instalando o Xdebug no PHP.
Agora que você já tem o X debug instalado, vamos configurar tudo. Eu estou atualmente utiizando esta configuração (deve ser colocado no seu arquivo php.ini):
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir=/home/erik/Documentos/dev/xdebug
Vamos entender! Em primeiro lugar o comando profiler_output_dir na terceira linha informa qual o diretório que o Xdebug deve salvar o relatório de profile e os dois comandos de cima dizem quando ele deve ser executado.
Existem duas formas do Xdebug gerar seu log, a primeira é a cada requisição que você fizer e a segunda é quando você pedir, eu prefiro a segunda forma (quando eu solicitar), assim não fico com aquele diretório lotado de logs atoa, então para dizer que o Xdebug não deve analizar meu código cada vez que eu executar um comando PHP eu simplesmente desligo o profiler_enable (0 = desligado, 1 = ligado).
Agora para habilitar o gatilho (para executar quando eu pedir), apenas mudo o valor do profiler_enable_trigger para 1, você pode notar que caso escolha gerar um log a cada requisição, o valor que colocar aqui no profilerenabletrigger não importa, o log vai ser sempre gerado.
Mas como eu digo para o Xdebug analizar meu código? Simples, passe XDEBUG_PROFILE como get, post ou um cookie com esse nome, exemplo:
http://localhost:8080/users/view/3/?XDEBUG_PROFILE
Pronto, agora o seu código será analizado e um log salvo no diretório configurado em xdebug.profiler_output_dir.
Agora que tal você abrir pra ler? O que, não deu pra ler? O log gerado é no formato Cache Grind e pode ser lido pelos seguintes softwares:
KCacheGrin - Linux
WinCacheGrind - Windows
Webgrind - Navegador
Ainda da pra intalar o KCacheGrind no Mac, mas eu não usei, só vou deixar o link: http://www.tekkie.ro/computer-setup/how-to-install-kcachegrind-qcachegrind-on-mac-osx/
Conclusão
Agora você pode ter métricas reais sobre sua aplicação, bem rapidamente, não esqueça de dar uma olhada na página da documentação oficial pra ficar por dentro das novidades.