código PHP Profiling
-
02-07-2019 - |
Pergunta
Eu gostaria de encontrar uma maneira de determinar quanto tempo cada função em PHP, e cada arquivo em PHP está tomando para executar. Eu tenho um aplicativo herdado PHP velho que eu estou tentando encontrar os "pontos ásperos" em e então eu gostaria de localizar quais rotinas e páginas estão tendo um tempo muito longo para carga, objetivamente.
Existem algumas ferramentas pré-fabricados que permitem isso, ou eu estou preso usando microtime, e construir a minha própria estrutura de perfis?
Solução
Eu tenho realmente feito algum trabalho de otimização na semana passada. XDebug é realmente o caminho a percorrer.
Apenas habilitá-lo como uma extensão (por alguma razão ele não iria funcionar com ze_extension na minha máquina Windows), configurar o seu php.ini com xdebug.profiler_enable_trigger = On e chamar seus URLs normais com XDEBUG_PROFILE = 1 ou como um get ou uma variável pós ao perfil que muito pedido. Não há nada mais fácil!
Além disso, eu posso realmente recomendo webgrind , um webbased (php) Google Summer of Code projeto que pode ler e analisar seus arquivos de saída de depuração!
Outras dicas
Aqui está uma boa gorjeta.
Quando você usa XDebug o seu perfil de PHP, configurar o profiler_trigger e usar isso em um bookmarklet para acionar o profiler XDebug;)
javascript:if(document.URL.indexOf('XDEBUG_PROFILE')<1){var%20sep=document.URL.indexOf('?');sep%20=%20(sep<1)?'?':'&';window.location.href=document.URL+sep+'XDEBUG_PROFILE';}
dar uma olhada na xdebug , que permite a criação de perfis em profundidade. E aqui está um explicação de como usar xdebug.
Profiler do Xdebug é uma ferramenta poderosa que lhe dá a capacidade de analisar seu código PHP e determinar estrangulamentos ou geralmente ver que partes de seu código estão lentas e poderiam usar um impulso de velocidade. O profiler em Xdebug 2 saídas de informações de perfil sob a forma de um cachegrind compatível arquivo.
Kudos para SchizoDuckie para mencionar Webgrind . Esta é a primeira vez que ouço isso. Muito útil (+1).
Caso contrário, você pode usar kcachegrind no Linux ou sua menor derivado wincachegrind . Ambos os aplicativos irá ler arquivos de saída profiler do XDebug e resumi-los para o seu prazer.
Uma vez vi uma tela de elenco para Zend Núcleo . Parece muito bom, mas na verdade custa dinheiro, eu não sei se isso é um problema para você.
XDebug é bom, mas não é assim tão fácil de usar ou configuração IMO.
O profiler embutido no Zend Studio é muito fácil de usar. Você só apertar um botão na barra de ferramentas do navegador e BAM você tem o seu perfil código. ts talvez não tão aprofundada como depósito Cachegrind, mas sua sempre foi bom o suficiente para mim.
Você precisa configurar Zend Platform também, mas isso é simples e gratuito para uso de desenvolvimento - você ainda tem que pagar a licença Zend Studio embora.
funções de perfil do XDebug são muito bons. Se você obtê-lo para salvar a saída em valgrind formato, então você pode usar algo como KCachegrind ou Wincachegrind para ver o call-gráfico e, se você é um tipo visual da pessoa, exercitar-se mais facilmente o que está acontecendo.
Além de ter seriamente real-time poderoso de depuração capacidades, PhpED da NuSphere (www.nusphere.com) tem um built-in de perfil que pode ser executado com um único clique de dentro do IDE.
Se você instalar a extensão xdebug você pode configurá-lo para perfis de exportação de execução, que você pode ler no WinCacheGrind (no Windows). Não me lembro o nome do aplicativo que lê os arquivos no Linux.
A solução mais fácil é usar Zend Profiler, você não precisa Zend Platform para uso é, você pode executá-lo diretamente do seu navegador, é bastante precisa e tem a maioria dos recursos que você precisa e está integrado no Zend Studio