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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top