Instalar y configurar XHProf (Ubuntu)

19

Problema

Estoy tratando de usar XHProf pero recibo un horrible error de php cada vez que se ejecuta.

Warning: Invalid argument supplied for foreach() in xhprof_compute_inclusive_times() (line 1670 of /var/www/drupal/sites/all/modules/XHProf/xhprof.inc).
Warning: Invalid argument supplied for foreach() in xhprof_compute_flat_info() (line 1644 of /var/www/drupal/sites/all/modules/XHProf/xhprof.inc).
Warning: Invalid argument supplied for foreach() in theme_xhprof_overall_summary() (line 367 of /var/www/drupal/sites/all/modules/XHProf/xhprof.module).

El problema se resuelve aquí porque la carpeta temporal no existe, pero la mía sí.

Configurar el lado del servidor

Estoy ejecutando un nuevo Ubuntu Server 13.04 con Drupal 7.

Instale xhprof pearsiguiendo las instrucciones aquí . También agregué un directorio temporal a php.ini, que creé manualmente.

extension=xhprof.so
xhprof.output_dir="/var/tmp/xhprof"

Configuración de Drupal

Tengo instalado el desarrollo y también instalé el módulo XHProf.

En admin/config/development/xhprof, habilité el perfil de todas las visitas a la página y solicitudes borrosas.

Al seguir un enlace xhprof me sale el error anterior.

ingrese la descripción de la imagen aquí

Dominic Woodman
fuente

Respuestas:

35

Buen dios Batman. Eso fue increíblemente frustrante. Aquí hay una guía para que xhprof funcione. (Nota: Soy muy nuevo en Linux. No estoy seguro de si los permisos que uso son seguros o si hay una mejor manera de hacerlo. Solo lo haría en un entorno de prueba).

IMPORTANTE: No le dirá nada sobre cómo interpretarlo. No tengo idea de cómo hacerlo, solo estoy feliz de que funcione.

Hacer que XHProf funcione

1. ¿Qué sistema operativo estás ejecutando?

Mac o Linux?

Es posible.

Windows?

Probablemente no. Para ejecutar xhprof en Windows, debe tener un dll compilado. Hay un enlace a uno en este hilo , pero siempre tuve problemas de compatibilidad cuando traté de usarlo en XAMPP.

Creo que fue compilado con una versión diferente de Apache.

2. Hacer que funcione en Ubuntu

Es posible en Mac. Aquí hay dos enlaces útiles:

http://www.lullabot.com/blog/article/installing-xhprof-mamp-and-php-52-mac-os-106-snow-leopard http://www.midwesternmac.com/blogs/jeff-geerling / getting-xhprof-working-well

Pero no lo he hecho. Logré que funcione en Ubuntu Server 13.04, aunque creo que cualquier versión reciente de Ubuntu Server funcionaría.

Configuré mi servidor en VirtualBox. VirtualBox es gratuito, pero puede tomar un poco aprender a configurarlo.

3.Instalando XHProf

Asumiré que tenemos un servidor Ubuntu totalmente funcional.

Primero necesitamos instalar pera. Usaremos esto para instalar XHProf.

sudo apt-get install pear

Seguimos esto con phpdev, que también es necesario.

sudo apt-get install php5-dev

Si estos comandos no funcionan y me he equivocado, simplemente sigue adelante con:

sudo pecl install -f xhprof

Ubuntu te dirá lo que te estás perdiendo y te dará el aviso para instalarlo. Una vez que tenga todas las dependencias, instale xhprof.

Es posible que obtenga un error al instalar xhprof, intentará descargar la versión beta y fallará. En ese caso intente:

sudo pecl install -f xhprof-beta

Con suerte, xhprof ya está instalado.

Ahora necesitamos configurarlo. Abra su php.ini que está en /etc/php5/apache2/php.ini y agregue las dos líneas siguientes en la sección de extensiones:

extension=xhprof.so
xhprof.output_dir="/var/tmp/xhprof"

La segunda línea establece el directorio de salida. Si esta carpeta no existe, tendrá que crearla. Cuando haya hecho eso, reinicie apache usando

sudo service apache2 restart

4. Comprobar si XHProf se está ejecutando

Ahora tenemos que verificar si eso funcionó.

Prueba 1:

Entrar php -m

Si ve xhprof en la lista, está listo para comenzar. Si no, no te preocupes, prueba esto para comprobar si funciona:

Vaya a su raíz web /var/www/y cree un archivo php con solo:

phpinfo();

Guárdelo como phpinfo.php. Abra esto en su navegador y debería ver información de PHP. Busque xhprof y si ve esto, se está ejecutando.

ingrese la descripción de la imagen aquí

5. Conseguir que funcione con Drupal

No pude hacerlo funcionar con el módulo Drupal. Entonces, en cambio, te diré cómo hacerlo funcionar con el módulo de desarrollo.

Primero alguna configuración que tomé prestada de aquí . Realmente no seguí esta parte, pero funciona muy bien y todo eso.

Cree un nuevo archivo de configuración con el siguiente comando:

sudo nano /etc/apache2/conf.d/xhprof.conf

e inserte el siguiente código.

alias /xhprof_html "/usr/share/php/xhprof_html/"

Entonces posiblemente necesitemos crear un enlace simbólico a nuestra carpeta xhprof_html. Entonces, en caso de que establezca esto:

ln -s / usr / share / php / xhprof_html / var / www / xhprof_html

Esto creará una carpeta en su raíz web que apunta al archivo xhprof existente. Luego, en su navegador, puede abrir http://mywebsitehere.com/xhprof para ver todas las ejecuciones que ha realizado.

Luego reinicie apache. Ahora es el momento de una pequeña configuración de desarrollo. Vaya a la configuración de desarrollo, habilite xhprof y establezca:

xhprof directory = /usr/share/php

XHProf URL = /xhprof_html

Ahora, al final de cada página, debería ver un pequeño enlace a xhprof.

ingrese la descripción de la imagen aquí

Y hacer clic en él debería llevarlo a una página que se ve así. Ya terminaste ¡Felicidades!

ingrese la descripción de la imagen aquí

Si eso no funcionó y está recibiendo errores de ejecución, probablemente sea porque Drupal no tiene permiso para escribir en la carpeta tmp que configuramos anteriormente, así que ingrese:

sudo chown -R www-data /var/tmp/xhprof

Y con suerte eso funciona. Ya hemos terminado Hoorah!

A menos que desee funciones gráficas. Afortunadamente, eso es tan fácil como:

sudo apt-get install graphviz
sudo service apache2 restart

Y ahora deberías tener funciones gráficas. ¡Ojalá eso ayude!

Dominic Woodman
fuente
Wow, impresionante respuesta. Por lo que vale, los permisos que ha utilizado parecen razonables.
Letharion
Sí, hubo un serio dolor al hacer que eso funcionara. Espero que ayude a alguien más (y a mí en dos meses cuando lo haya olvidado).
Dominic Woodman el
Gran respuesta, funciona perfectamente, gracias para aliviar el dolor :-)
JurgenR
No tengo /etc/apache2/conf.ddirectorio Hice sudo nano /etc/apache2/conf-enabled/xhprof.confy en su a2enconf xhproflugar
milkovsky
Gracias por el repaso. En Ubuntu 14.04, instalé desde los repositorios de Ubuntu en lugar de PEAR, y descubrí que necesitaba ejecutar php5enmod xhprofpara crear el enlace simbólico prioritario desde el directorio conf.d al archivo de directorio xhprof.ini de mods-available. Otra forma de verificar si xhprof está habilitado es ejecutar php5-fpm -i | grep xhprof, reemplazando php5-fpm con cualquier SAPI que esté verificando.
mesch