176 votos

La manera más sencilla para perfilar un script PHP

¿Cuál es la forma más fácil de perfilar un script PHP?

Me encantaría viradas algo en que me muestra un volcado de todas las llamadas a la función y el tiempo que tomó, pero también estoy bien con poner algo en torno a funciones específicas.

He intentado experimentar con el microtime función:

 $then = microtime();
myFunc();
$now = microtime();

echo sprintf("Elapsed:  %f", $now-$then);
 

pero que a veces me da resultados negativos. Además de que es un montón de problemas para espolvorear que todo mi código.

196voto

mercutio Puntos 5828

¿Quieres Xdebug creo. Instale en el servidor, vuelva a encenderlo, bombear la salida a través kcachegrind (para Linux) o WinCacheGrind (para windows) y voy a mostrar unos gráficos bonitos que detallan la timings, condes y la memoria exacta uso (pero usted necesitará otra extensión para eso).

Se balancea, en serio: D

85voto

Vincent Puntos 5027

El PECL APD extensión se utiliza como sigue:

 <?php
apd_set_pprof_trace();

//rest of the script
?>
 

Después, analizar el archivo generado utilizando pprofp .

Ejemplo de salida:

 Trace for /home/dan/testapd.php
Total Elapsed Time = 0.00
Total System Time  = 0.00
Total User Time    = 0.00


Real         User        System             secs/    cumm
%Time (excl/cumm)  (excl/cumm)  (excl/cumm) Calls    call    s/call  Memory Usage Name
--------------------------------------------------------------------------------------
100.0 0.00 0.00  0.00 0.00  0.00 0.00     1  0.0000   0.0009            0 main
56.9 0.00 0.00  0.00 0.00  0.00 0.00     1  0.0005   0.0005            0 apd_set_pprof_trace
28.0 0.00 0.00  0.00 0.00  0.00 0.00    10  0.0000   0.0000            0 preg_replace
14.3 0.00 0.00  0.00 0.00  0.00 0.00    10  0.0000   0.0000            0 str_replace
 

33voto

michalzuber Puntos 700

Webgrind es ideal para visualizar Cachegrind para Xdebug

introducir descripción de la imagen aquí

22voto

luka Puntos 198

Si restando microtimes le da resultados negativos, intente utilizar la función con el argumento true ( microtime(true) ). Con true , la función devuelve un float en vez de una cadena (como lo hace si se llama sin argumentos).

10voto

Josef Sábl Puntos 2663

PECL XHPROF parece interensting también. Tiene interfaz de hacer clic en HTML para la visualización de informes y bastante sencillo documentación . Todavía tengo que probar que aunque.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X