Pregunta

Mi pregunta se basa en Este artículo.

¿Cómo puede hacer los datos de perfiles sobre un código PHP por XDubug2 y luego ponerlos en una aplicación como Kcachegrind?

He usado con éxito xdebug en mi ubuntu, ya que resalta mis mensajes de error en el navegador. Sin embargo, no he encontrado ninguna herramienta de terminal como xdebug.

Me gustaría tener una vista visual de mi código PHP como este

alt text

¿Fue útil?

Solución

Agregue esta línea a su php.ini

xdebug.profiler_enable = 1

Luego, si ejecuta PHP a través de un servidor web, necesita reiniciar el servidor web; de lo contrario, el cambio de confirmación no se recoge.

Si está ejecutando PHP a través de CLI, por supuesto, no es necesario reiniciar.

Ahora, cuando ejecuta su script PHP, se crea un archivo Cachegrind.out.pid en el directorio especificado por la configuración xdebug.profiler_output_dir php.ini. Es /TMP por defecto.

Ese archivos es el que Kcachegrind puede cargar.

Hay otros medios para invocar esta generación de perfil, puede leer sobre ellos en http://www.xdebug.org/docs/all_settings#profiler_enable

Otros consejos

Eche un vistazo a WebGrind (http://code.google.com/p/webgrind/)

Me encontré con una situación similar en la que solo tenía acceso a una terminal y no un entorno visual para probar. Peor aún, estaba usando una máquina de Windows y una masilla.

Las soluciones disponibles son

  1. Instalación de WebGrind (http://code.google.com/p/webgrind/)
  2. Ejecutando xdebug y copiando los archivos Cachegrind.out en una máquina donde tiene un espectador de Cachegrind.

Para mí, la respuesta fue SCP los archivos de Cachegrind en mi máquina de Windows local y usar WinCachegind para mirarlos. Puede SCP en su caja de Linux y ejecutar Kcachegrind en los archivos. La desventaja de esto es que es posible que no tenga la misma estructura de archivos, por lo que no podrá ver el código de origen. Si tiene la fuente también en su máquina local, o puede obtenerla allí, también puede solucionarlo. Abra los archivos de Cachegrind en VIM (u otro editor) y haga una búsqueda global y reemplace en las rutas para cambiarlos a la ruta de origen correcta en su máquina local.

Espero que esto sea lo que estabas buscando.

Editar para abordar el comentario:

Si está trabajando para obtener un archivo Callgrind que sea algo diferente. Para esto, debe ejecutar en Linux (que creo que es) y tener los programas Callgrind y Valgrind disponibles. Lo último que asume aquí es que está ejecutando PHP como un mod de Apache y no de alguna otra manera. Use la herramienta Callgrind contra el inicio de Apache y luego ejecute la solicitud en el navegador. Esto le dará información detallada no solo en el árbol de llamadas PHP, sino también en muchas cosas en Apache que pueden estar causando problemas.

Aquí hay un ejemplo de la

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

El -x iniciará Apache en modo de depuración con solo un hilo. A partir de aquí, abra un navegador web y presione el script PHP que desee. Luego regrese y apague a Apache. Esto también debería terminar con el análisis de Callgrind.

Si no necesita Apache o un navegador web, puede intentar ejecutar CallGrind con solo el comando PHP

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

Eso debería darle los mismos resultados pero sin todas las cosas de Apache.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top