Améliorer son code PHP Mise en pratique du profiling Xhprof

Xhprof est une extension PHP qui ne sert qu'à faire du profiling (contrairement à Xdebug qui permet aussi le débogage de l'application). Elle a été créée par Facebook et a la particularité de pouvoir tourner sur des serveurs de production.


OUTIL Xhprof

La documentation officielle est consultable à l'adresse suivante : http://mirror.facebook.net/facebook/xhprof/doc.html


On retrouve le même callgraph qu'avec Xdebug, mais Xhprof donne des statistiques plus précises concernant la machine, le temps CPU utilisé et la consommation mémoire.

Le principe de fonctionnement reste à peu près équivalent à celui de Xdebug, mais la prise en main est plus précise et sera donc légèrement plus complexe à mettre en place. Voyons cela.



Installation de Xhprof



Xhprof est présent dans PECL. Disponible en paquets Debian sur le dépôt Dotdeb, il lui manque néanmoins les fichiers d'interface web. De plus, un simple pecl install xhprof peut échouer à cause de la structure particulière de cette extension. Il est donc préférable de décomposer les commandes et de compiler l'extension à la main.


 Installation de Xhprof

phptuning:/tmp# pecl download xhprof-beta
phptuning:/tmp# tar xvf xhprof-0.9.2.tgz
phptuning:/tmp# cd ./xhprof-0.9.2/extension/
phptuning:/tmp/xhprof-0.9.2/extension/# phpize
phptuning:/tmp/xhprof-0.9.2/extension/# ./configure --with-php-config=/usr/bin/
php-config
phptuning:/tmp/xhprof-0.9.2/extension/# make && make install


Maintenant, ajoutez les lignes suivantes dans php.ini (ou dans un fichier de configuration .ini que PHP lit).


 Activation et configuration de Xhprof


; php.ini
extension = xhprof.so
xhprof.output_dir = /tmp


Comme avec Xdebug, nous indiquons à Xhprof de mettre les fichiers de trace des profils dans /tmp.

Il faut ensuite déclencher Xhprof sur un script.