Qu'est-ce que XHProf
XHProf est un analyseur léger de mesure de performances en couches. Pendant la phase de collecte de données, il suit le nombre d'appels et les données de mesure, et affiche le diagramme en arc des appels dynamiques du programme. Il calcule des mesures de performances exclusives telles que le temps d'exécution écoulé, le temps de calcul du processeur et la surcharge de mémoire pendant la phase de reporting et de post-traitement.
Le rapport sur les performances des fonctions peut être interrompu par l'appelant et l'appelé. Pendant la phase de collecte de données, XHProf détecte les fonctions récursives via des boucles dans le graphique d'appels et évite les boucles d'appels récursifs en attribuant des noms profonds uniques.
Pour faire simple, XHProf peut collecter pour nous l'état du système de nombreux programmes, et il est livré avec un ensemble d'outils graphiques en ligne qui peuvent nous fournir des informations graphiques détaillées.
Installation
Téléchargez et installez simplement le pack d'extension directement dans PECL. Ce n'est pas différent des autres installations d'extension. Cette extension est toujours mise à jour et maintenue, elle est donc parfaitement prise en charge pour la version PHP7.
Utilisation de la ligne de commande
xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY); //xhprof_enable( XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY); //xhprof_enable( XHPROF_FLAGS_MEMORY); //xhprof_enable(); for ($i = 0; $i <= 1000; $i++) { $a = $i * $i; } function test_application(){ for ($i = 0; $i <= 1000; $i++) { $a = $i * $i; } } test_application(); $xhprof_data = xhprof_disable(); print_r($xhprof_data); // Array // ( // [main()==>test_application] => Array // ( // [ct] => 1 // [wt] => 16 // [cpu] => 21 // [mu] => 848 // [pmu] => 0 // ) // [main()] => Array // ( // [ct] => 1 // [wt] => 115 // [cpu] => 115 // [mu] => 1416 // [pmu] => 0 // ) // )
Utilisez xhprof_enable() pour activer le profileur Ses paramètres sont plusieurs constantes, ce qui signifie en gros afficher les informations sur le processeur, les informations sur la mémoire, etc. il n'y a pas de paramètres, seuls les deux paramètres ct et wt seront renvoyés.
Appelez xhprof_disable() pour terminer l'analyse et renvoyer les résultats de l'analyse. La valeur de retour inclut l'état d'exécution de la fonction principale, qui est l'état du code de test de notre page actuelle. Il y a aussi les performances de la fonction appelée test_application(). Le contenu spécifique est :
ct : nombre d'appels
poids : temps d'attente pour s'exécuter, millisecondes
cpu : durée de fonctionnement du processeur, millisecondes
mu : utilisation de la mémoire, octets
pmu : utilisation maximale de la mémoire
Oui, c'est aussi simple que cela. En appelant les deux fonctions, nous pouvons voir l'état d'exécution du programme de script actuel, la quantité de mémoire qu'il occupe et la quantité de temps CPU qu'il consomme. Bien sûr, ce qui est plus pratique, c'est qu'il peut également afficher des informations plus détaillées via la page Web.
Voir le rapport des résultats sur le web
Tout d'abord, nous devons faire un travail de préparation. La première consiste à installer un graphviz pour le dessin graphique, la seconde consiste à modifier le répertoire de stockage des résultats du fichier php.ini et la troisième consiste à copier le code de l'analyseur dans le code source et à modifier notre code de test précédent.
yum install graphviz
Dans le système CentOS, nous pouvons installer graphviz directement en utilisant yum. Ensuite, nous spécifions le répertoire de sortie de xhprof dans le fichier php.ini.
xhprof.output_dir=/tmp
Ensuite, nous devons copier le répertoire xhporf_html et le répertoire xhporf_lib dans le fichier de code source et les placer sous le fichier de projet. Modifiez ensuite le code pour enregistrer les résultats de l'analyse des performances.
// ..... 上面的代码 $xhprof_data = xhprof_disable(); require 'xhprof_lib/utils/xhprof_lib.php'; require 'xhprof_lib/utils/xhprof_runs.php'; $xhprofRuns = new XHProfRuns_Default(); $runId = $xhprofRuns->save_run($xhprof_data, 'xhprof_test'); echo 'http://192.168.56.102/index.php?run=' . $runId . '&source=xhprof_test';
Ensuite, nous devons configurer le serveur dans xhporf_html, ici j'utilise une simple commande php -S pour l'exécuter.
cd xhprof_html/ php -S 0.0.0.0:80
Enfin, utilisez le lien ci-dessus pour accéder à cette page et vous pourrez voir les informations pertinentes.
Résumé
Le code de test d'aujourd'hui n'est qu'une simple introduction à l'utilisation de xhporf. En fait, cette extension et cet ensemble d'outils d'analyse peuvent être intégrés dans le cadre de notre projet réel. De cette façon, nous pouvons bien surveiller l’état d’exécution du programme actuel dans l’environnement de test. Cependant, il n'est toujours pas recommandé de l'utiliser dans un environnement formel. Après tout, le débogage ou une telle analyse des performances ne doit pas être exposé au monde extérieur. Dans un environnement formel, nous pouvons effectuer une analyse et un réglage en ligne de commande.
Code de test :
https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/%E7%AE%80%E5%8D%95%E5%AD%A6%E4%B9%A0PHP%E4%B8%AD%E7%9A%84%E5%B1%82%E6%AC%A1%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%99%A8.php
Apprentissage recommandé : Tutoriel vidéo php