Pergunta

Minha pergunta é baseada em Este artigo.

Como você pode criar dados de perfil sobre um código PHP pelo XDubug2 e depois colocá -los em um aplicativo como o KCACHEGRind?

Eu usei o XDebug com sucesso no meu Ubuntu, pois destaca minhas mensagens de erro no navegador. No entanto, não encontrei nenhuma ferramenta de terminal como xdebug.

Eu gostaria de ter uma visão visual do meu código PHP como este

alt text

Foi útil?

Solução

Adicione esta linha ao seu php.ini

xdebug.profiler_enable = 1

Então, se você executar o PHP através de um servidor da web, precisará reiniciar o servidor da web, caso contrário, a alteração do Conf não será retirada.

Se você estiver executando o PHP através da CLI, é claro que não é necessário reiniciar.

Agora, quando você executa seu script PHP, um arquivo cachegrind.out.pid é criado no diretório especificado por XDEBug.profiler_output_dir php.ini. É /TMP por padrão.

Esses arquivos é o que KcacheGrind é capaz de carregar.

Existem outros meios para invocar esta geração de perfil, você pode ler sobre eles em http://www.xdebug.org/docs/all_settings#profiler_enable

Outras dicas

Dê uma olhada no webgrind (http://code.google.com/p/webgrind/)

Eu encontrei uma situação semelhante em que só tinha acesso a um terminal e não ao ambiente visual para testar. Pior ainda, eu estava usando uma máquina Windows e massa.

As soluções disponíveis são

  1. Instalando WebGrind (http://code.google.com/p/webgrind/)
  2. Executando o Xdebug e copiando os arquivos CacheGrind.out em uma máquina onde você tem um visualizador de cachegrind.

Para mim, a resposta foi SCP os arquivos de cachegrind na minha máquina Windows local e usar o wincachegrind para olhá -los. Você pode SCP neles na sua caixa Linux e executar o KcacheGrind nos arquivos. A desvantagem disso é que você pode não ter a mesma estrutura de arquivos, portanto não poderá visualizar o código SourCecode. Se você possui a fonte também em sua máquina local ou pode chegar lá, também pode corrigir isso. Abra os arquivos Cachegrind no VIM (ou outro editor) e faça uma pesquisa global e substitua os caminhos para alterá -los para o caminho de origem correto em sua máquina local.

Espero que seja isso que você estava procurando.

Editar para abordar o comentário:

Se você estiver trabalhando para obter um arquivo CallGrind que seja um pouco diferente. Para isso, você precisa estar em execução no Linux (o que eu acho que é) e ter os programas CallGrind e Valgrind disponíveis. A última coisa a supor aqui é que você está executando o PHP como um mod Apache e não de outra maneira. Use a ferramenta CallGrind contra o início do Apache e execute a solicitação no navegador. Isso fornecerá informações detalhadas não apenas na árvore de chamadas PHP, mas também em muitas coisas no Apache que podem estar causando problemas.

Aqui está um exemplo do

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/httpd -X

O -x iniciará o Apache no modo de depuração com apenas um thread. A partir daqui, abra um navegador da web e atinge o script PHP que você deseja. Em seguida, volte e desligue o Apache. Isso também deve encerrar a análise CallGrind.

Se você não precisar

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/php my_php_script.php

Isso deve fornecer os mesmos resultados, mas sem todas as coisas do Apache.

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