Domanda

La mia domanda è basata su questo articolo .

Come si può rendere i dati di profiling di un codice PHP da Xdubug2 e poi metterlo a un app come KCachegrind?

ho usato con successo Xdebug nella mia Ubuntu, dal momento che mette in evidenza i miei messaggi di errore nel browser. Tuttavia, non ho trovare qualsiasi strumento di terminale come xdebug.

Mi piacerebbe avere una visione visiva del mio codice PHP come questo

alt text

È stato utile?

Soluzione

Aggiungi questa riga al tuo php.ini

xdebug.profiler_enable = 1

Quindi, se vi capita di eseguire PHP attraverso un server web è necessario riavviare il server web, altrimenti la modifica conf non viene prelevato.

Se si esegue PHP tramite CLI, poi, naturalmente, nessun riavvio è necessario.

Ora, quando si esegue lo script PHP, un file cachegrind.out.PID viene creato nella directory specificata da impostazione php.ini xdebug.profiler_output_dir. E '/ tmp per default.

Questo file è quello kcachegrind è in grado di caricare.

Ci sono altri mezzi per richiamare questa generazione profilo, è possibile leggere su di loro a http: / /www.xdebug.org/docs/all_settings#profiler_enable

Altri suggerimenti

Date un'occhiata a WebGrind ( http://code.google.com/p/webgrind/ )

Mi sono imbattuto in una situazione simile in cui ho avuto solo l'accesso a un terminale e non l'ambiente visivo su cui testare. Ancora peggio, stavo usando una macchina Windows e stucco.

Le soluzioni disponibili sono

  1. Installazione WebGrind ( http://code.google.com/p/webgrind/)
  2. Esecuzione Xdebug e copia dei file cachegrind.out su una macchina in cui si dispone di un visualizzatore cachegrind.

Per me la risposta è stato quello di SCP i file Cachegrind sulla mia macchina Windows locale e utilizzando WinCachegrind a guardare loro. li si potrebbe SCP sul vostro Linux box ed eseguire KCachegrind sui file. L'aspetto negativo di questo, è che non si può avere la stessa struttura dei file, in modo da non essere in grado di visualizzare il codice sorgente. Se si dispone la fonte anche sul computer locale, o può arrivare lì, è possibile risolvere anche questo. Aprire i file Cachegrind in vim (o altro editor) e fare una ricerca e sostituzione globale sui percorsi per cambiarli al percorso di origine corretto sul computer locale.

Spero che questo è ciò che stavate cercando.

EDIT all'indirizzo commento:

Se si sta lavorando per ottenere un file callgrind che è un po 'diversa. Per questo, è necessario essere in esecuzione in Linux (che penso che tu sia) e hanno i programmi callgrind e valgrind disponibili. L'ultima cosa da pensare è che si esegue PHP come mod Apache e non in qualche altro modo. Utilizzare lo strumento callgrind contro l'avvio di Apache e quindi eseguire la richiesta nel browser. Questo vi darà informazioni dettagliate non solo sulla pianta chiamata php, ma anche su molte cose in Apache che possono causare problemi.

Ecco un esempio della

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

Il -X avrà inizio apache in modalità di debug con un solo thread. Da qui aprire un browser Web e ha colpito lo script php che si desidera. Poi torna indietro e lo spegnimento apache. Questo dovrebbe anche finire il parse callgrind.

Se non avete bisogno di apache o un browser Web, è possibile provare a eseguire callgrind con solo il comando php

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

Questo dovrebbe dare gli stessi risultati, ma senza tutta la roba apache.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top