Je vous propose aujourd'hui de découvrir un outil plutôt intéressant : Blackfire.io. Cet outil, édité par SensioLabs, va vous permettre de profiler vos scripts PHP et de générer un rapport sur les performances de vos différentes méthodes.
Installation
Afin de faire fonctionner blackfire, il va nous falloir installer plusieurs choses :
- L'agent, qui est un daemon à installer sur le serveur, qui va se charger de récupérer les informations et les envoyer à blackfire.io
- La sonde PHP qui va récupérer les informations de performance et les envoyer à l'agent
- Le companion, une extension sur le navigateur qui permettra d'activer le profiling
- Un outil en ligne de commande qui vous permettra de débugguer des scripts directement depuis le terminal
Il est possible d'installer blackfire.io très simplement en suivant les instructions de la page getting started. Dans le cas d'un système debian il suffit d'ajouter un dépôt puis quelque apt-get install et le tour est joué !
Utilisation
Une fois les différents outils installés, l'utilisation de blackfire est plutôt simple. Si vous souhaitez analyser les performances d'un script en ligne de commande il vous suffit de taper :
blackfire run php monscript.php
Et les données seront automatiquements transmises au dashboard blackfire.io. Dans le cas d'une page Web il suffit d'installer l'extension du navilateur et de l'activer lorsque vous vous rendez sur une page générée par le serveur disposant de la sonde PHP.
Vous aurez alors accés à un rapport vous montrant les différentes méthodes et les performances de chaque élément de votre scipt PHP.
Le dashboard vous permet de voir les performances suivant différents crtères comme le temps, l'utilisation mémoire, la charge du processeur ou encore les temps d'écriture et de lecture. Sur le panneau de gauche on retrouve les différentes méthodes appelées par notre application et leurs impact sur la dimension choisie. Ce temps est séparé en 2 données :
- Excluded, qui ne prend en compte que le code spécifique à la fonction spécifié. Si une autre fonction est appelé, son temps ne sera pas pris en compte.
- Included, qui prend en compte tout le code d'une fonction avec les autres fonctions incluses.
De manière générale, si on recherche des optimisations à faire, on va plutôt regarder la valeur excluded car elle sera plus représentative du coût réel de notre code.