Bom Deus, Batman. Isso foi incrivelmente frustrante. Aqui está um guia para fazer o xhprof funcionar. (Nota: sou muito novo no Linux. Não tenho certeza se as permissões que utilizo são seguras ou se existe uma maneira melhor de fazê-lo. Só o faria em um ambiente de teste.)
IMPORTANTE: Ele não informa nada sobre como interpretá-lo. Eu não tenho idéia de como, estou feliz que funcione.
Colocando o XHProf funcionando
1. Qual sistema operacional você está executando?
Mac ou Linux?
É possível.
Janelas?
Provavelmente não. Para executar o xhprof no Windows, você precisa ter uma dll compilada. Há um link para um neste segmento , mas sempre tive problemas de compatibilidade quando tentei usá-lo no XAMPP.
Eu acho que foi compilado com uma versão diferente do Apache.
2. Fazendo funcionar no Ubuntu
É possível no Mac. Aqui estão dois links úteis:
http://www.lullabot.com/blog/article/installing-xhprof-mamp-and-php-52-mac-os-106-snow-leopard
http://www.midwesternmac.com/blogs/jeff-geerling / ficando-xhprof-trabalhando-bem
Mas eu não fiz isso. Consegui fazê-lo funcionar no Ubuntu Server 13.04, embora eu ache que qualquer versão recente do Ubuntu Server funcione.
Eu configurei meu servidor no VirtualBox. O VirtualBox é gratuito, mas pode demorar um pouco para aprender como configurá-lo.
3.Instalando o XHProf
Vou assumir que temos um servidor Ubuntu totalmente funcional.
Primeiro precisamos instalar pêra. Usaremos isso para instalar o XHProf.
sudo apt-get install pear
Seguimos isso com o phpdev, que também é necessário.
sudo apt-get install php5-dev
Se esses comandos não funcionarem e eu os entendi errado, siga em frente com:
sudo pecl install -f xhprof
O Ubuntu dirá o que está faltando e fornecerá o prompt para instalá-lo. Depois de obter todas as dependências, instale o xhprof.
Você pode receber um erro ao instalar o xhprof, ele tentará baixar o beta e falhará. Nesse caso, tente:
sudo pecl install -f xhprof-beta
Espero que o xhprof esteja agora instalado.
Agora precisamos configurá-lo. Abra seu php.ini que está em /etc/php5/apache2/php.ini
e adicione as duas linhas a seguir na seção de extensões:
extension=xhprof.so
xhprof.output_dir="/var/tmp/xhprof"
A segunda linha define o diretório de saída. Se essa pasta não existir, será necessário criá-la. Quando você tiver feito isso, reinicie o apache usando
sudo service apache2 restart
4. Verificando se o XHProf está em execução
Agora precisamos verificar se isso funcionou.
Teste 1:
Entrar php -m
Se você vir o xhprof na lista, estará pronto. Caso contrário, não se preocupe, tente isso para verificar se está funcionando:
Vá para o seu webroot /var/www/
e crie um arquivo php com apenas:
phpinfo();
Salve-o como phpinfo.php. Abra isso no seu navegador e você deverá ver as informações do PHP. Pesquise xhprof e, se vir isso, ele está sendo executado.
5. Como trabalhar com o Drupal
Não consegui fazê-lo funcionar com o módulo Drupal. Então, em vez disso, vou lhe dizer como fazê-lo funcionar com o módulo devel.
Primeiro algumas configurações que peguei emprestadas daqui . Eu realmente não segui essa parte, mas funciona como um cavalo de presente e tudo mais.
Crie um novo arquivo de configuração com o seguinte comando:
sudo nano /etc/apache2/conf.d/xhprof.conf
e insira o código a seguir.
alias /xhprof_html "/usr/share/php/xhprof_html/"
Em seguida, possivelmente precisamos criar um link simbólico para a nossa pasta xhprof_html. Portanto, apenas no caso de definir isso:
ln -s / usr / share / php / xhprof_html / var / www / xhprof_html
Isso criará uma pasta no seu webroot que aponta para o arquivo xhprof existente. Em seu navegador, você pode abrir http://mywebsitehere.com/xhprof para ver todas as execuções feitas.
Então reinicie o apache. Agora é hora de uma pequena configuração de desenvolvimento. Vá para as configurações de desenvolvimento, ative xhprof e defina:
xhprof directory = /usr/share/php
XHProf URL = /xhprof_html
Agora, na parte inferior de cada página, você verá um pequeno link para xhprof.
E clicar nele deve levar você a uma página que se parece com isso. Você Terminou. Parabéns!
Se isso não funcionou e você está recebendo erros de execução, provavelmente é porque o Drupal não tem permissão para gravar na pasta tmp que configuramos anteriormente, então digite:
sudo chown -R www-data /var/tmp/xhprof
E espero que funcione. Foram realizadas. Hoorah!
A menos que você queira funções gráficas. Felizmente, é tão fácil quanto:
sudo apt-get install graphviz
sudo service apache2 restart
E agora você deve ter funções gráficas. Espero que ajude!
/etc/apache2/conf.d
diretório. Eu fizsudo nano /etc/apache2/conf-enabled/xhprof.conf
ea2enconf xhprof
em vez dissophp5enmod xhprof
para criar o link simbólico prioritário do diretório conf.d para o arquivo xhprof.ini do diretório mods-available. Outra maneira de verificar se o xhprof está ativado é executarphp5-fpm -i | grep xhprof
, substituindo php5-fpm por qualquer SAPI que você esteja verificando.