Installa e configura XHProf (Ubuntu)


19

Problema

Sto cercando di usare XHProf ma ricevo un terribile errore php ogni volta che viene eseguito.

Warning: Invalid argument supplied for foreach() in xhprof_compute_inclusive_times() (line 1670 of /var/www/drupal/sites/all/modules/XHProf/xhprof.inc).
Warning: Invalid argument supplied for foreach() in xhprof_compute_flat_info() (line 1644 of /var/www/drupal/sites/all/modules/XHProf/xhprof.inc).
Warning: Invalid argument supplied for foreach() in theme_xhprof_overall_summary() (line 367 of /var/www/drupal/sites/all/modules/XHProf/xhprof.module).

Il problema è stato risolto qui perché la cartella temporanea non esiste, comunque la mia.

Imposta lato server

Sto eseguendo un nuovo Ubuntu Server 13.04 con Drupal 7.

Installa xhprof pearseguendo le istruzioni qui . Ho anche aggiunto una directory temporanea a php.ini, che ho creato manualmente.

extension=xhprof.so
xhprof.output_dir="/var/tmp/xhprof"

Drupal Set-Up

Ho installato sia lo sviluppo che ho installato anche il modulo XHProf.

In admin/config/development/xhprof, ho abilitato la profilazione di tutte le visualizzazioni di pagina e delle richieste di trascinamento.

Seguendo un collegamento xhprof ottengo l'errore sopra.

inserisci qui la descrizione dell'immagine

Risposte:


35

Buon Dio Batman. È stato incredibilmente frustrante. Ecco una guida per far funzionare xhprof. (Nota: sono molto nuovo su Linux. Non sono sicuro se le autorizzazioni che utilizzo siano sicure o se esiste un modo migliore per farlo. Lo farei solo in un ambiente di test.)

IMPORTANTE: non ti dirà nulla su come interpretarlo. Non ho idea di come, sono solo felice che funzioni.

Far funzionare XHProf

1. Quale sistema operativo stai utilizzando?

Mac o Linux?

È possibile.

Finestre?

Probabilmente no. Per eseguire xhprof su Windows devi avere una DLL compilata. C'è un link a uno in questo thread , ma ho sempre avuto problemi di compatibilità con esso quando ho provato ad usarlo su XAMPP.

Penso che sia stato compilato con una versione diversa di Apache.

2. Far funzionare su Ubuntu

È possibile su Mac. Ecco due link utili:

http://www.lullabot.com/blog/article/installing-xhprof-mamp-and-php-52-mac-os-106-snow-leopard http://www.midwesternmac.com/blogs/jeff-geerling / getting-xhprof-lavoro-bene

Ma non l'ho fatto. Sono riuscito a farlo funzionare su Ubuntu Server 13.04, anche se penso che qualsiasi versione recente di Ubuntu Server funzionerebbe.

Ho configurato il mio server su VirtualBox. VirtualBox è gratuito ma potrebbe essere necessario un po 'di tempo per imparare come configurarlo.

3.Installazione di XHProf

Presumo che abbiamo un Ubuntu Server perfettamente funzionante.

Per prima cosa dobbiamo installare pear. Useremo questo per installare XHProf.

sudo apt-get install pear

Seguiamo questo con phpdev, che è anche necessario.

sudo apt-get install php5-dev

Se questi comandi non funzionano e li ho sbagliati, vai avanti con:

sudo pecl install -f xhprof

Ubuntu ti dirà cosa ti manca e ti darà la richiesta di installarlo. Una volta che hai tutte le dipendenze installa xhprof.

Potresti ricevere un errore durante l'installazione di xhprof, proverà a scaricare la beta e fallirà. In tal caso, prova:

sudo pecl install -f xhprof-beta

Spero che xhprof sia ora installato.

Ora dobbiamo configurarlo. Apri php.ini che si trova in /etc/php5/apache2/php.ini e aggiungi le seguenti due righe nella sezione estensioni:

extension=xhprof.so
xhprof.output_dir="/var/tmp/xhprof"

La seconda riga imposta la directory di output. Se questa cartella non esiste, dovrai crearla. Dopo aver riavviato Apache con

sudo service apache2 restart

4. Verifica se XHProf è in esecuzione

Ora dobbiamo verificare se ha funzionato.

Test 1:

accedere php -m

Se vedi xhprof nell'elenco, sei a posto. In caso contrario, non ti preoccupare, prova invece a verificare se funziona:

Vai al tuo webroot /var/www/e crea un file php con solo:

phpinfo();

Salvalo come phpinfo.php. Apri questo nel tuo browser e dovresti vedere le informazioni PHP. Cerca xhprof e se vedi questo allora è in esecuzione.

inserisci qui la descrizione dell'immagine

5. Far funzionare con Drupal

Non riuscivo a farlo funzionare con il modulo Drupal. Quindi, invece, ti dirò come farlo funzionare con il modulo di sviluppo.

Prima alcune configurazioni che ho preso in prestito da qui . Non ho davvero seguito questa parte, ma funziona così tanto cavallo da regalo e tutto il resto.

Crea un nuovo file di configurazione con il seguente comando:

sudo nano /etc/apache2/conf.d/xhprof.conf

e inserisci il seguente codice.

alias /xhprof_html "/usr/share/php/xhprof_html/"

Quindi potremmo eventualmente creare un link simbolico alla nostra cartella xhprof_html. Quindi, nel caso in cui imposta questo:

ln -s / usr / share / php / xhprof_html / var / www / xhprof_html

Questo creerà una cartella nella tua webroot che punta al file xhprof esistente. Quindi nel tuo browser puoi aprire http://mywebsitehere.com/xhprof per vedere tutte le corse che hai fatto.

Quindi riavviare apache. Ora è tempo di fare una piccola configurazione di sviluppo. Vai alle impostazioni di sviluppo, abilita xhprof e imposta:

xhprof directory = /usr/share/php

XHProf URL = /xhprof_html

Ora in fondo a ogni pagina dovresti vedere un piccolo link a xhprof.

inserisci qui la descrizione dell'immagine

E facendo clic su di esso dovresti accedere a una pagina simile a questa. Hai finito. Congratulazioni!

inserisci qui la descrizione dell'immagine

Se ciò non ha funzionato e si verificano errori di esecuzione è probabilmente perché Drupal non dispone dell'autorizzazione per scrivere nella cartella tmp che abbiamo impostato in precedenza, quindi immettere:

sudo chown -R www-data /var/tmp/xhprof

E speriamo che funzioni. Sono stati fatti. Hoorah!

A meno che tu non voglia funzioni grafiche. Per fortuna è facile come:

sudo apt-get install graphviz
sudo service apache2 restart

E ora dovresti avere funzioni grafiche. Spero che questo aiuti!


Caspita, risposta impressionante. Per quello che vale, i permessi che hai usato sembrano sani.
Letharion,

Sì, c'è stato un certo dolore nel farlo funzionare. Spero che possa aiutare qualcun altro (e io tra due mesi quando me ne sarò dimenticato).
Dominic Woodman,

Ottima risposta, funziona perfettamente, grazie per alleviare il dolore :-)
Jurgen R

Non ho /etc/apache2/conf.ddirectory. Ho fatto sudo nano /etc/apache2/conf-enabled/xhprof.confe a2enconf xhprofinvece
milkovsky

Grazie per il passaggio. Su Ubuntu 14.04 ho installato dai repository Ubuntu anziché PEAR e ho scoperto che dovevo eseguire php5enmod xhprofper creare il collegamento simbolico prioritario dalla directory conf.d al file xhprof.ini della directory mods-available. Un altro modo per verificare se xhprof è abilitato è quello di eseguire php5-fpm -i | grep xhprof, sostituendo php5-fpm con qualsiasi SAPI che si sta verificando.
lunedì
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.