Blackfire est un service proposé par Sensiolabs, permettant de faire un profil de consommation d’une application PHP dans le but de l’optimiser. Rendu public bien avant la sortie de PHP 7, ce service ne propose malheureusement pas de clients à jour à l’heure où j’écris ces lignes, d’où ce tutoriel.

La solution

Au lieu de se reposer sur les services proposés, c’est à dire le probe – la sonde – pour récupérer les profils de performance bruts, et l’agent – service à mettre sur le serveur web – chargé d’envoyer les données aux serveurs de Blackfire, nous allons simplement récupérer les données depuis XDebug au format cachegrind puis les uploader “manuellement” en utilisant le client fourni par Blackfire.

Configurer XDebug

Je vais considérer qu’XDebug est installé sur votre machine (testable à l’aide de la commande php -i | grep "xdebug support" si vous êtes sur Mac OS X ou Linux).

Pour profiler une page, nous allons donc changer le fichier de configuration d’XDebug. La commande suivante vous permettra de trouver le fichier à éditer :

php -i | grep xdebug.ini

Ajouter les lignes suivante à ce fichier (ou éditer la valeur actuelle si la ligne existe déjà) :

xdebug.profiler_output_dir = /tmp/cachegrind/files xdebug.profiler_enable_trigger = 1

La première ligne doit correspondre à un répertoire existant sur la machine. Vérifiez son existance ou créez le avant tout (mkdir -p /tmp/cachegrind/files ).

La seconde ligne permet d’activer la collection de données uniquement lors de l’utilisation du paramètre XDEBUG_PROFILE=1 (passable par cookie, en GET ou en POST).

Uploader sur Blackfire

Après avoir executé votre première requête avec XDEBUG_PROFILE=1 activé, vous trouverez un fichier cachegrind dans le dossier spécifié.

$ ls /tmp/cachegrind/files/ cachegrind.out.697

Il faut donc maintenant avoir le client Blackfire installé. Vous pouvez utiliser which blackfire pour vérifier si le client existe, et si cette commande retourne blackfire not found, vous devez alors suivre la procédure d’installation (installez uniquement l’agent en suivant les instructions intitulées Installing the Blackfire CLI tool).

Enfin, uploadez le fichier cachegrind à l’aide de l’agent :

blackfire upload /tmp/cachegrind/files/cachegrind.out.697

Voilà, le profil sera alors disponible sur blackfire.io comme vous avez l’habitude avec PHP 5.x sans intervention de votre part.

Comments