Domanda

Vorrei trovare un modo per determinare quanto tempo impiega ogni funzione in PHP e ogni file in PHP sta per funzionare. Ho una vecchia applicazione PHP legacy che sto cercando di trovare i "punti difficili" e quindi vorrei individuare quali routine e pagine impiegano molto tempo a caricarsi, oggettivamente.

Esistono strumenti predefiniti che lo consentono, o sono bloccato usando microtime e costruendo il mio framework di profilazione?

È stato utile?

Soluzione

Ho effettivamente fatto alcuni lavori di ottimizzazione la scorsa settimana. XDebug è davvero la strada da percorrere.

Abilitalo come estensione (per qualche motivo non funzionerebbe con ze_extension sul mio computer Windows), configura php.ini con xdebug.profiler_enable_trigger = On e chiama i tuoi normali URL con XDEBUG_PROFILE = 1 come uno dei due o una variabile post per profilare quella richiesta. Non c'è niente di più facile!

Inoltre, posso davvero consigliare webgrind , un codice Web di Google Summer Of Code (php) progetto in grado di leggere e analizzare i file di output di debug!

Altri suggerimenti

Ecco un bel suggerimento.

Quando usi XDebug per profilare il tuo PHP, imposta profiler_trigger e usalo in un bookmarklet per attivare il profiler XDebug;)

javascript:if(document.URL.indexOf('XDEBUG_PROFILE')<1){var%20sep=document.URL.indexOf('?');sep%20=%20(sep<1)?'?':'&';window.location.href=document.URL+sep+'XDEBUG_PROFILE';}

dai un'occhiata a xdebug , che consente una profilazione approfondita. E ecco una spiegazione su come usare xdebug.

  

Il profiler di Xdebug è uno strumento potente   che ti dà la possibilità di analizzare   il tuo codice PHP e determinare   colli di bottiglia o generalmente vedere quale   parti del codice sono lente e potrebbero   usa un aumento di velocità. Il profiler in   Xdebug 2 genera informazioni di profilazione   sotto forma di cachegrind compatibile   file.

Complimenti a SchizoDuckie per menzionando Webgrind . Questa è la prima volta che ne ho sentito parlare. Molto utile (+1).

Altrimenti, puoi usare kcachegrind su Linux o la sua derivata minore wincachegrind . Entrambe queste app leggeranno i file di output del profiler di xdebug e le riassumeranno per il tuo piacere di visione.

Una volta ho visto un cast per Zend Core . Sembra piuttosto buono, ma in realtà costa denaro, non so se questo è un problema per te.

XDebug è carino ma non è così facile da usare o configurare IMO.

Il profiler incorporato in Zend Studio è molto facile da usare. Basta premere un pulsante sulla barra degli strumenti del browser e BAM hai il tuo profilo codice. forse non è così profondo come una discarica di CacheGrind, ma è sempre stato abbastanza buono per me.

È necessario configurare anche la piattaforma Zend, ma è semplice e gratuito per l'uso dello sviluppo, ma dovresti comunque pagare per la licenza di Zend Studio.

Le funzioni di profilazione di xdebug sono abbastanza buone. Se lo ottieni per salvare l'output in formato valgrind, puoi quindi utilizzare qualcosa come KCachegrind o Wincachegrind per visualizzare il grafico delle chiamate e, se sei un tipo di persona visiva, capire più facilmente cosa sta succedendo.

Oltre ad avere funzionalità di debug in tempo reale davvero potenti, PhpED di NuSphere (www.nusphere.com) ha un profiler incorporato che può essere eseguito con un solo clic dall'IDE.

Se si installa l'estensione xdebug è possibile configurarlo per esportare i profili di esecuzione, che è possibile leggere in WinCacheGrind (su Windows). Non riesco a ricordare il nome dell'app che legge i file su Linux.

La soluzione più semplice è utilizzare Zend Profiler, non è necessario utilizzare la piattaforma Zend, puoi eseguirla direttamente dal tuo browser, è abbastanza accurata e ha il maggior numero di funzionalità di cui hai bisogno ed è integrata in Zend Studio

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