Maison >développement back-end >Problème PHP >Comment utiliser le profileur hiérarchique en PHP

Comment utiliser le profileur hiérarchique en PHP

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-06-01 17:20:031533parcourir

Cet article vous donnera une brève introduction à l'analyseur de performances hiérarchique en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment utiliser le profileur hiérarchique en PHP

En PHP, lorsque nous avons besoin de déboguer, nous utilisons généralement memory_get_usage() pour vérifier l'utilisation de la mémoire. Mais si vous souhaitez voir l'utilisation du processeur par le script actuel, il n'existe pas de fonction prête à l'emploi.

Cependant, PHP nous fournit également une extension : XHProf, qui est une extension open source de FaceBook. Elle peut nous aider à voir certaines conditions de performances lorsque le script actuel est en cours d'exécution.

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 &#39;xhprof_lib/utils/xhprof_lib.php&#39;;
require &#39;xhprof_lib/utils/xhprof_runs.php&#39;;

$xhprofRuns = new XHProfRuns_Default();
$runId = $xhprofRuns->save_run($xhprof_data, &#39;xhprof_test&#39;);

echo &#39;http://192.168.56.102/index.php?run=&#39; . $runId . &#39;&source=xhprof_test&#39;;

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer