Améliorer son code PHP Un peu plus loin avec Xhprof

Comme vous le voyez, chaque profil concerne une application (on doit renseigner son nom) et est identifié par un numéro unique (runid).

Xhprof possède un outil capable de tracer les différences entre 2 analyses et donc de montrer l'évolution des corrections que vous avez apportées : amélioration en vert, dégradation en rouge.

En reprenant l'exemple de l'accès à la base de données du thème précédent concernant Xdebug, nous pouvons demander à cet outil de nous représenter les améliorations apportées par le changement de notre code, consistant à utiliser des sockets Unix à la place d'une connexion (non persistante) TCP/IP vers localhost.


 Affichage de la différence entre 2 profils d'une même application

http://127.0.0.1/xhprof/xhpro_html/
index.php?run1=4d7e179817472run2=4d7e177e41deb&source= profil


Ceci est très pratique pour suivre les évolutions des temps de réponse d'un script PHP ou d'une partie d'un script.


PERFORMANCES Xhprof et production

Xhprof a été conçu à la base par les développeurs de Facebook pour profiler leurs scripts en production. L'influence de Xhprof sur PHP est minime, contrairement à celle de Xdebug (ce point est en court d'amélioration par le concepteur de Xdebug).



Conclusion sur le profiling


Le profiling sert avant tout à savoir très précisément quelles sont les fonctions (dans le code PHP) à l'origine de lenteurs, ou souvent appelées. Ceci donne une vision globale du fonctionnement de l'application, ce qui est très important.

Une fois les instructions gourmandes localisées, il ne reste plus qu'à les optimiser. Cette étape impose d'avoir des connaissances poussées en algorithmie, ainsi qu'une maîtrise de l'architecture et du langage PHP, afin d'obtenir les meilleurs résultats sans que le fonctionnement de l'application n'en soit affecté.

De façon générale, on s'aperçoit souvent que PHP n'est pas forcément la cause des lenteurs. Tous les organes de l'architecture (serveur de base de données, serveur memcached, connexions réseau...) jouent aussi un rôle important dans les performances de l'application et il arrive parfois que PHP passe plus de temps à attendre, par exemple, une réponse du SGBD surchargé qu'à exécuter son propre code.

 


PHP est rarement le goulot d'étranglement d'une application, sauf si des développeurs peu scrupuleux codent en abusant de récursivité ou en utilisant des boucles dans des boucles dans? Ainsi, il convient de prendre autant soin des accès au réseau, des bases de données, des systèmes de fichiers... que du code.


OPTIMISATION Cache HTTP

Le chapitre 10 vous en apprendra plus sur HTTP et ses possibilités de cache extrêmement utiles.