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.
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.
Y hacer clic en él debería llevarlo a una página que se ve así. Ya terminaste ¡Felicidades!
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!
/etc/apache2/conf.d
directorio Hicesudo nano /etc/apache2/conf-enabled/xhprof.conf
y en sua2enconf xhprof
lugarphp5enmod xhprof
para 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 ejecutarphp5-fpm -i | grep xhprof
, reemplazando php5-fpm con cualquier SAPI que esté verificando.