xDebug est un outil de débogage et de profiling applicatif pour PHP. Il permet de détecter les erreurs dans les scripts développés et de les visualiser plus facilement qu’avec PHP seul.
xDebug est une extension de PHP disponible depuis 2002 et les mises à jour sont régulières. Ces mises à jour permettent d’assurer au maximum la compatibilité avec les dernières version de PHP. En mode profiling, le but de cette extension est de cibler les fonctions lentes (goulot d’étranglement) d’une application en mesurant le temps que PHP passe dans chacune des fonctions exécutées lors d’une requête HTTP.
Cette extension permet de profiler une page mais permet aussi d’étendre le débogage de PHP en ajoutant certaines fonctionnalités très utiles lors du développement d’application. Il est fortement déconseillé d’utiliser cette extension dans un environnement de production en raison de l’impact sur les ressources du serveur.
Débuguer
xDebug permet en effet d’étendre le débuguage de PHP. Un grand nombre de fonctionnalités sont disponibles avec cette extension permettent d’améliorer le débogage de PHP. Certaines fonctions PHP comme var_dump
(permettant d’afficher le contenu d’une variable) sont affichées de façon plus lisible que lorsque l’extension n’est pas présente.
L’affichage des erreurs de php sont mises en avant et affichées de manière plus claire. Toutes les améliorations apportées par cette extension permettent aux développeurs d’avoir une meilleure visibilité lors des débogages des applications.
De plus, Cette extension permet de faire du pas à pas dans une application. Cette fonctionnalité est très intéressante puisqu’elle permet de connaître à des moments définis (à l’aide de points d’arrêts) les valeurs que prennent les variables et le fonctionnement des fonctions de l’application.
Cette fonctionnalité est compatible avec la plupart des IDE (Environnement de développement) permettant de développer en PHP à l’aide de plugin spécifiques.
Profiler
Le profilage avec xDebug est l’utilisation la plus intéressante dans le processus d’amélioration des performances. Une fois l’installation de l’extension terminée, il faut la configurer pour ne profiler des pages que lorsque nous le souhaitons.
En effet lors d’un profiling, les pages sont très lentes a s’afficher car xDebug mesure le temps pour chaque fonction de la page auditée. Une utilisation en continu serait trop contraignante pour les développements.
Afin d’activer le profiling sur une page, il faut transmettre un paramètre dans la requête HTTP appelé XDEBUG_PROFILE
ou utiliser une extension de navigateur i.e : EasyXdebug pour Firefox permettant de transmettre le paramètre automatiquement. Lorsque la requête avec le paramètre a été envoyée, un fichier de « traces » sera créé dans un dossier du serveur dans le but d’être traité.
Afin de traiter ces « traces », des logiciels tels que KcacheGrind ou QCacheGrind permettent de les transformer sous forme visuelle.
A l’aide de ce type de trace, il est possible de visualiser les éventuels goulots d’étranglements dans le but d’améliorer le code de l’application.
Pour conclure
En utilisant xDebug pour le débug et pour le profiling, il est possible d’améliorer les performances d’une application directement depuis l’étape de développement. Le profilling permet de visualiser le comportement de l’application et de pourvoir palier les potentiels problèmes liés aux goulots d’étranglements.
L’utilisation d’un outil tel que xDebug en développement dans le cas d’une application sujette a des problématiques de performances est donc indispensable.
Pour plus d’informations :
Documentation officielle xDebug
Performances PHP : Audit et optimisation LAMP