Maison  >  Article  >  développement back-end  >  Comment utiliser l'analyse xhprof en php7

Comment utiliser l'analyse xhprof en php7

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-06-18 09:33:321480parcourir

Cet article vous présentera comment utiliser l'analyse xhprof en php7. 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 l'analyse xhprof en php7

Il s'agit d'un document pur. Si vous en avez besoin à l'avenir, vous pouvez le consulter à tout moment pour l'analyse afin de faciliter les tests de code et l'analyse comparative (. prend en charge php7).

Créer un environnement de test virtuel Docker devant

docker run -it -p 80:80 -v /Users/xxx/Desktop/xhprof:/data phalcon /bin/bash

Copier le code

1 Installer xhprof

Il existe de nombreux xhprofs qui prennent en charge. php7, nous utilisons github.com/longxinH ici /xh… Ce projet.

1.1 Extraire le projet

git clone https://github.com/longxinH/xhprof.git

Copier le code

1.2 Installer le projet

cd xhprof/extension/
/usr/server/php7/bin/phpize
./configure --with-php-config=/usr/server/php7/bin/php-config
make && make install

1.3 Ajouter l'extension xhprof.so

Terminer l'exécution, nous devez introduire ce fichier so dans la configuration php.ini

Vérifiez le chemin du fichier php.ini

/usr/server/php7/bin/php --ini
 
Configuration File (php.ini) Path: /usr/server/php7/etc
Loaded Configuration File: /usr/server/php7/etc/php.ini
Scan for additional .ini files in: /usr/server/php7/etc/php
Additional .ini files parsed: (none)
rrree

Redémarrez php-fpm.

2. Le processus d'utilisation de xhprof

pour construire un cas est brièvement mentionné

Nous intégrons le code suivant devant la logique à surveiller

编辑 /usr/server/php7/etc/php.ini
[Xhprof]
extension=xhprof.so
xhprof.output_dir=/data/logs

sortie :

Nous avons constaté que deux fonctions de l'extension xhprof ont été appelées. La signification de la valeur de sortie

ct représente le nombre actuel d'appels. à cette fonction. Dans ce cas, c'est tout 1 temps

wt représente le temps nécessaire à l'exécution de la fonction, en microsecondes

En voyant cela, nous constatons que les informations que nous obtenons ne sont pas très nombreuses. , par exemple, nous nous soucions souvent aussi de la mémoire occupée, du processeur et d'autres indicateurs.

\xhprof_enable();
......
$order = new OrderAdepter();
$result = $order->getUserOrderByOrderNo(123);
......
$xhprof_data = \xhprof_disable();
print_r($xhprof_data);

sortie :

  1. Utilisation statistique de la mémoire XHPROF_FLAGS_MEMORY

  2. XHPROF_FLAGS_CPU compte l'utilisation du processeur

  3. >Nous avons constaté qu'il existe deux champs de sortie pour l'utilisation statistique de la mémoire, mu et pmu. mu représente la mémoire utilisée (octets), et pmu représente l'utilisation maximale de la mémoire (octets)

3 Graphique xhprof

Bien sûr, nous espérons toujours que le Le goulot d'étranglement des performances peut être observé plus intuitivement sous la forme d'un graphique. Voyons comment l'utiliser.

3.1 À ce stade, nous devons utiliser la bibliothèque xhprof_lib

Lorsque nous avons téléchargé la source xhprof. code, le répertoire contenait déjà

\xhprof_enable(
XHPROF_FLAGS_MEMORY
+XHPROF_FLAGS_CPU
+XHPROF_FLAGS_NO_BUILTINS
);

. L'exécution a imprimé une chaîne, que nous pouvons comprendre comme un identifiant de fichier. Nous avons constaté que la méthode save_run a été exécutée, alors où a-t-elle été enregistrée ?

Vous souvenez-vous encore d'une autre configuration lorsque nous avons introduit l'extension xhprof.so ?

Oui, sous le chemin configuré par xhprof.output_dir (vous devez créer le répertoire manuellement)

Si vous êtes intéressé, vous pouvez l'ouvrir et y jeter un œil. Il stocke certaines informations sur les objets sérialisés que nous avons analysés.

3.2 Configurer un service distinct pour accéder à notre analyse. résultats

Nous pointons vers le répertoire xhprof_html dans notre projet xhprof

Je pense que vous comprenez maintenant le rôle de notre run_id et de notre projet dans save_run

La partie supérieure de la nôtre est un aperçu des indicateurs d'interface demandés, et ce qui suit est l'exécution spécifique de chaque fonction appelée .

Signification du nom de champ : Nombre d'appels appelsIncl. Wall Time les appels incluent tout le temps passé par les sous-fonctions, mesuré en microsecondes. Hors Wall TimeLe temps nécessaire à l'exécution de la fonction elle-même, à l'exclusion du temps d'exécution du sous-arbre. mesuré en microsecondes Calculer Incl. L'appel CPU inclut tout le temps CPU passé par la sous-fonction Excl. Le temps CPU passé par l'exécution de la fonction CPU elle-même, à l'exclusion du temps d'exécution du sous-arbre, calculé en microsecondes. utilisé par l'exécution de la sous-fonction, en octets. Calculez la mémoire de l'exécution de la fonction Excl.MemUse elle-même et calculez la valeur maximale de Incl.PeakMemUseIncl.MemUse en octets. 🎜>

Les % de terminaisons restants sont les proportions correspondantes

3.3 [Afficher le Callgraph complet]

Vous pouvez également exécuter les deux lignes de code suivantes pour installer

\xhprof_enable(XHPROF_FLAGS_MEMORY + XHPROF_FLAGS_CPU+XHPROF_FLAGS_NO_BUILTINS);
 
......
$order = new OrderAdepter();
$result = $order->getUserOrderByOrderNo(123);
......
 
$xhprof_data = \xhprof_disable();
 
include_once '/data/xhprof-master/xhprof_lib/utils/xhprof_lib.php';
include_once '/data/xhprof-master/xhprof_lib/utils/xhprof_runs.php';
$xhprof_runs = new \XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, 'your_project');
echo $run_id; //output 5cbf25e21fe9b
Si vous souhaitez visualiser le processus d'appel, vous devez installer la bibliothèque graphique graphviz. Ici, nous vous recommandons d'installer manuellement graphviz 2.24 .0 cette version (montez personnellement sur le piège, 2.40 n'est pas pris en charge)

yum install -y libpng
yum install -y graphviz

Portez une attention particulière aux parties rouges et jaunes, si vous sentez que seulement Si vous souhaitez analyser un certain processus, vous pouvez cliquer sur une méthode et puis cliquez sur [Afficher le Callgraph complet] pour afficher le graphique

4. Le problème

Nous l'avons découvert lors de l'utilisation de xhprof ci-dessus. Forte dépendance, plusieurs classes du package d'installation de xhprof sont introduites dans le code.

yum -y install libtool-ltdl-devel
 
cd /data/graphviz-2.24.0
 
./configure
make
make install
Ici, nous pouvons utiliser la référence du package composer pour réaliser la même fonction. Il est recommandé d'introduire le package pbweb/xhprof.

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