2013-02-13 4 views
5

Mi piacerebbe che xdebug tracciasse solo "salti" di oltre X ms o di oltre Y KB RAM, ad esempio, ogni esecuzione che richiedesse più di 100 ms o maggiore utilizzo di memoria di oltre 100 KB. Ciò mi permetterebbe di ignorare migliaia di linee di traccia che non ho bisogno di vedere e renderebbe l'ottimizzazione molto più semplice - poiché in ZF2, il framework gonfiato richiede 1 secondo solo per iniziare con il caricatore automatico del composer sul nostro progetto aziendale, che risulta in migliaia di linee per cui non ho davvero bisogno. Da qualche parte lungo la linea trovo i salti più grandi nei tempi di esecuzione, ma non dopo un lungo periodo di scorrimento.C'è un modo per registrare solo le esecuzioni più lente di X con xdebug?

Esiste un'opzione predefinita per disabilitare la registrazione di esecuzioni "più veloci di X" o, in caso contrario, conosci uno script di shell/python helper che potrebbe ridurre solo quelli più lenti?

Per chiarimenti, sto parlando del contenuto del file .xt che ottengo eseguendo xdebug_start_trace() nella mia app.

+0

Stai parlando dell'output generato da 'xdebug.trace_ *', giusto? –

+0

Bella domanda, vorrei conoscere anche la risposta – Haensel

+0

@FAngel Domanda principale aggiornata – Swader

risposta

1

Non so nulla di tali opzioni, ma quello che posso suggerire è di utilizzare il profilo anziché la traccia.

Here è un articolo come si può usare. Se breve, inserire queste righe al file php.ini:

xdebug.profiler_enable = 0 
xdebug.profiler_enable_trigger = 1 
xdebug.profiler_output_dir="c:\Projects" 

e quando si desidera avviare profiler, url correre con parametro di query ?XDEBUG_PROFILE=1

questo produrrà un file con nome come cachegrind.out.* e luogo in profiler_output_dir.

Quel file può essere visualizzato con CacheGrind viewer per il proprio sistema operativo. Il link sopra ha un elenco di app per visualizzare quei file per piattaforme diverse. Stavo usando wincachegrind (per Windows) per creare il profilo dell'app ZendFramework. Strumento molto utile, come per me. E l'interfaccia consente di vedere l'albero delle chiamate, il tempo di esecuzione, il numero di chiamate ecc. Bene, ma non vedo alcuna opzione per misurare l'utilizzo della memoria con esso.

+0

Grazie, ho appena provato ad analizzare il cachegging con webgrind, ma questi risultati sono inutili per me. I valori "costo totale chiamate" e "costo totale inclusivo" sono del tutto irrilevanti, perché non riesco a vedere il flusso e non sono in grado di identificare i grandi salti e gli avanzi - ad esempio, function1() potrebbe richiedere 0.003 in un contesto, e 1.3s in un altro - queste tracce non riflettono questo. Quindi perché mi piacerebbe filtrare l'output di traccia con salti di prestazioni. – Swader

+1

Hm. Non sono sicuro di capire completamente cosa intendi, ma in wincachegrind è presente la voce di menu generale se fai clic destro sulla funzione. Nel pannello generale mostra tutte le chiamate di quella funzione con il tempo di ogni funzione, funzione del chiamante e file. Inoltre, ho guardato intorno al web e ci sono dei visualizzatori di output di traccia scritti in PHP. Mai usato quelli, ma forse li troverai utili. –

+1

[Here] (http://stackoverflow.com/q/1456395/1558311) è una domanda su SO in cui ho visto pochi link per tracciare il visualizzatore di output. –

Problemi correlati