Comment utiliser l'analyse xhprof en php7
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.
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)
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 :
Utilisation statistique de la mémoire XHPROF_FLAGS_MEMORY
XHPROF_FLAGS_CPU compte l'utilisation du processeur
>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.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à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.
\xhprof_enable( XHPROF_FLAGS_MEMORY +XHPROF_FLAGS_CPU +XHPROF_FLAGS_NO_BUILTINS );
<🎜. >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 graphvizCopier après la connexion
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pour résoudre le problème du plugin n'affichant pas installé dans PHP 7.0 : Vérifiez la configuration du plugin et activez le plugin. Redémarrez PHP pour appliquer les modifications de configuration. Vérifiez les autorisations du fichier du plugin pour vous assurer qu'elles sont correctes. Installez les dépendances manquantes pour garantir le bon fonctionnement du plugin. Si toutes les autres étapes échouent, reconstruisez PHP. D'autres causes possibles incluent des versions de plugin incompatibles, le chargement d'une mauvaise version ou des problèmes de configuration PHP.

En php5, nous pouvons utiliser la fonction fsockopen() pour détecter le port TCP. Cette fonction peut être utilisée pour ouvrir une connexion réseau et effectuer certaines communications réseau. Mais en php7, la fonction fsockopen() peut rencontrer certains problèmes, comme ne pas pouvoir ouvrir le port, ne pas pouvoir se connecter au serveur, etc. Afin de résoudre ce problème, nous pouvons utiliser la fonction socket_create() et la fonction socket_connect() pour détecter le port TCP.

Comment installer l'extension mongo dans php7.0 : 1. Créez le groupe d'utilisateurs et l'utilisateur mongodb ; 2. Téléchargez le package de code source mongodb et placez le package de code source dans le répertoire "/usr/local/src/" ; Entrez le répertoire « src/ » ; 4. Décompressez le package de code source ; 5. Créez le répertoire de fichiers mongodb ; 6. Copiez les fichiers dans le répertoire « mongodb/ » 7. Créez le fichier de configuration mongodb et modifiez la configuration.

Les solutions courantes pour les environnements de serveur PHP consistent à s'assurer que la version correcte de PHP est installée et que les fichiers pertinents ont été copiés dans le répertoire du module. Désactivez SELinux temporairement ou définitivement. Vérifiez et configurez PHP.ini pour vous assurer que les extensions nécessaires ont été ajoutées et configurées correctement. Démarrez ou redémarrez le service PHP-FPM. Vérifiez les paramètres DNS pour les problèmes de résolution.

Comment installer et déployer php7.0 : 1. Accédez au site officiel de PHP pour télécharger la version d'installation correspondant au système local ; 2. Extrayez le fichier zip téléchargé dans le répertoire spécifié 3. Ouvrez la fenêtre de ligne de commande et accédez à ; le répertoire "E:\php7" Exécutez simplement la commande "php -v".

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Par rapport à PHP7, PHP8 présente certains avantages et améliorations en termes de performances, de nouvelles fonctionnalités et améliorations de la syntaxe, du système de types, de la gestion des erreurs et des extensions. Cependant, le choix de la version à utiliser dépend de vos besoins spécifiques et des circonstances du projet. Introduction détaillée : 1. Amélioration des performances, PHP8 introduit le compilateur Just-in-Time (JIT), qui peut améliorer la vitesse d'exécution du code ; 2. Nouvelles fonctionnalités et améliorations de la syntaxe, PHP8 prend en charge la déclaration des paramètres nommés et des paramètres facultatifs, création de fonctions L'appel est plus flexible ; des classes anonymes, des déclarations de propriétés de type, etc. sont introduites.

Causes et solutions pour les erreurs Lors de l'utilisation de PECL pour installer des extensions dans un environnement Docker Lorsque nous utilisons un environnement Docker, nous rencontrons souvent des maux de tête ...
