Qual é a melhor maneira de monitorar funções / execuções do PHP?

5

Estou tentando encontrar a melhor maneira de monitorar quais códigos PHP / funções, solicitações do MySQL e / ou plugins estão tornando as páginas mais lentas em um site.

Eu sei que há um monte de opções diferentes por aí, incluindo plugins e soluções wordpress envolvendo firebug (firephp), mas o que vocês acham que é a melhor abordagem?

Pessoalmente, sinto que a solução ideal seria ter algum tipo de código que possa ser instalado por padrão a cada instalação do wordpress. Qualquer depuração / monitoramento / relatório seria SOMENTE executado se você adicionasse uma entrada opcional ao final do URL como? = Debug. Para fins de segurança, seria ainda melhor se alguém precisasse logar na área de administração do wordpress e criar uma chave de depuração temporária que criaria uma chave em hash e a anexaria à URL (como debugkey = v09098v09aq2ov1a8923) que estaria disponível apenas para 30 minutos.

Mas voltando às informações reais de depuração ... Eu sinto que usar o firebug é ótimo em muitas situações, mas opcionalmente eu acho que seria valioso se alguém pudesse acrescentar algo a qualquer URL que por exemplo cobrisse todas as funções, ganchos ou filtros usados em uma página específica, juntamente com o tempo de execução de cada um.

De qualquer forma ... Eu percebi que muitos de vocês aqui devem ter enfrentado esses problemas também e, assim, eu apreciaria quaisquer soluções que você esteja utilizando para resolver seus problemas.

Por favor, descreva como qualquer detalhe para os outros que possam ler isto, descrevendo quaisquer detalhes sobre a instalação e como usá-la corretamente.

ATUALIZADO Executando um Servidor Linux Dedicado

    
por NetConstructor.com 08.02.2011 / 21:53

4 respostas

5

Existem várias ferramentas e possibilidades, e é bom ter algo rápido em mãos. Conheço autores de plug-ins que oferecem sinalizadores de depuração para que você possa analisar o que está acontecendo com facilidade.

Quanto a plugins, eu não testei, mas olhei algumas screenshots e é pelo menos informativo: Debug Bar ( Plugin Wordpress) e a Barra de Depuração do BlackBox (Plugin Wordpress) .

Outro é um hooktracer que não é tão conhecido: SJ Hook Profiler .

Eu recomendo strongmente o xdebug para desenvolvimento e teste de sistemas, é um prazer tê-lo se você precisar criar um perfil ou depurar o material.

    
por hakre 09.02.2011 / 00:56
1

Você não indica qual é o seu arranjo de servidor. Se você estiver em um ambiente de hospedagem compartilhada, terá opções limitadas. Se for seu próprio servidor, você poderá instalar várias ferramentas de perfil para obter o Big Picture. Veja este tópico no SO para algumas opções .

Além disso, a lentidão da página entregue pode ser o resultado de muitas coisas, apenas algumas delas relacionadas ao PHP / MySQL. Você pode ter problemas de DNS, congestionamento de rede no final do cliente ou do servidor, páginas mal planejadas que têm muito carregamento de JS antecipadamente, em vez de atrasado etc. etc.

Para testar a cadeia alimentar fundamental da conexão de rede + a entrega do servidor da página HTML básica, tente usar o Programa Apache Benchmark . Cuidado! Você pode acabar com um servidor com esse cachorro, e sua empresa de hospedagem não vai se divertir se você fizer uma imitação de um ataque DOS em sua máquina.

Atualização: OK, um servidor Linux dedicado oferece opções importantes. Em particular, eu vou dobrar em xdebug e é a capacidade de perfil de execução do seu código. É incrível a rapidez com que algumas corridas sob um perfilador podem iluminar uma função de aparência inocente que está mastigando a máquina.

Se nada aparecer imediatamente em você, procure rotinas que pareçam levar mais tempo do que deveriam (o que isso significa) e / ou pareçam ser chamadas muito . O último pode ser corrigido simplesmente armazenando os resultados em cache para determinados valores. Se este for um problema geral envolvendo funções diferentes e de alto custo sendo chamadas com parâmetros diferentes, você pode verificar memoizing as funções afetadas. Eu fiz isso várias vezes em Python, mas não em PHP. Aqui está um artigo sobre a abordagem de uma pessoa . Há mais posts sobre esse assunto por aí.

    
por Peter Rowell 08.02.2011 / 23:04
1

XHProf (código aberto, parte da pilha do Facebook para o monitoramento de desempenho) é difícil de configurar pelo menos para a pessoa do Windows como eu), mas é ferramenta de profiler de desempenho muito completa e conveniente para PHP.

Eu gostaria que tivesse uma versão vencedora para minha pilha de testes local. : (

    
por Rarst 09.02.2011 / 07:50
1

Eu só posso recomendar a classe php Krumo que pode ser adicionada dentro de 10 seg a qualquer instalação e não depende de nenhuma configuração. Portanto, mesmo que você esteja fora do seu escritório, você tem uma ferramenta de depuração com você. Apenas certifique-se de carregá-lo depois de quaisquer outros arquivos e carregá-lo com if ( current_user_can('manage_options') ) krumo::enable(); para que nenhum convidado ou outro usuário corra em suas mensagens de depuração se você estiver depurando algo que já está ativo.

    
por kaiser 09.02.2011 / 12:11