Profilazione del codice PHP
-
02-07-2019 - |
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?
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