¿Problemas de rendimiento en Drupal?¿Qué sucede y dónde sucede? Para responder a la segunda pregunta existen las herramientas de "profiling", que nos ayudarán a identificar las funciones que más recursos están consumiendo, el número de llamadas a cada función e infinidad de información a mayores. Si desarrollas con Drupal no puedes prescindir de XHProf.
XHProf es una extensión PECL desarrollada por el equipo de ingeniería de Facebook como alternativa a XDebug que sirve para hacer profiling de aplicaciones PHP.
Su instalación en un entorno Linux + Drupal es muy sencilla.
Instalamos la extensión vía PECL
sudo apt-get install php5-common graphviz
sudo pecl config-set preferred_state beta
sudo pecl install xhprof
Creamos el directorio temporal para almacenar los datos. En mi caso :
mkdir /var/tmp/xhprof
chmod 777 /var/tmp/xhprof
Habilitamos la extensión creando el fichero /etc/php5/apache2/conf.d/xhprof.ini con el contenido
[xhprof]
extension=xhprof.so
xhprof.output_dir="/var/tmp/xhprof.conf"
Creamos un "alias" para construir la url de acceso al output de XHProf.
alias /xhprof_html "/usr/share/php/xhprof_html"
Reiniciamos Apache2
apache2ctl -t
service apache2 restart
La integración con Drupal es muy sencilla y se puede realizar directamente desde Drush seguiendo estos pasos:
drush dl devel
drush en devel
drush vset devel_xhprof_enabled 1
drush vset devel_xhprof_directory "/usr/share/php"
drush vset devel_xhprof_url "/xprof_html"
Si pedimos en nuestro navegador la url http://tu.sitio.local/xhprof_html obtendremos todos los datos del profiling.
Bonus:
- La base de este post es: http://www.pixelite.co.nz/article/profiling-drupal-7-performance-xhprof-and-devel
- He instalado el módulo devel desde https://drupal.org/project/devel
- Muy interesante el post de ecapy, sobre todo por la idea de crear un vhost sólo para XHProf. Podéis leer el post completo en http://ecapy.com/instalar-y-configurar-xhprof-para-que-funcione-en-drupal/
- Repo de Github de XHProf en https://github.com/facebook/xhprof . No dejéis de revisar todos los proyectos del perfil de Facebook en Github: son una pasada!
- Presentación "Profiling Drupal with XHProf"
- Nota breve son XHProf en http://www.freelance-soft.com/blog/desarrollo-web/optimizacion-de-aplicaciones-php-con-xhprof/
- Muy interesante el proyecto XHProf.io: una GUI para XHProf con muy buena pinta en http://xhprof.io/ . Tienen una demo interesante en https://dev.anuary.com/8d50658e-f8e0-5832-9e82-6b9e8aa940ac/?xhprof[template]=requests
- Vídeo: Profiling Drupal 7 with XHProf :