Table des matières
Phrase d'ouverture
Créez un environnement de test virtuel Docker à l'avance
1). . Installer le support xhprof
1.1 Extraire le projet
1.2 Installer le projet
1.3 Ajouter l'extension xhprof.so
2. Le processus d'utilisation de xhprof
3.3 [View Full Callgraph]
4. 问题点
5. 结束
Maison développement back-end PHP7 Utilisez xhprof pour analyser en php7

Utilisez xhprof pour analyser en php7

Jun 22, 2020 pm 05:39 PM
php

Utilisez xhprof pour analyser en php7

Phrase d'ouverture

Il s'agit d'un pur document si vous en avez besoin à l'avenir, vous pouvez le consulter à tout moment et utiliser xhprof pour l'analyse, ce qui facilite. tests de code et analyse comparative (prend en charge php7

Tutoriel recommandé : "Tutoriel php"

Créez un environnement de test virtuel Docker à l'avance

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

1). . Installer le support xhprof

Il existe de nombreux xhprof pour php7 Nous utilisons github.com/longxinH/xh... Ce projet ici.

1.1 Extraire le projet

git clone https://github.com/longxinH/xhprof.git复制代码

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

Enfin, après exécution, nous devons importer ce fichier so Accédez à la configuration php.ini

Affichez 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)复制代码

Modifiez /usr/server/php7/etc/php.ini

[Xhprof]
extension=xhprof.so
xhprof.output_dir=/data/logs复制代码

Redémarrez php- fpm c'est Can.

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

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

sortie :

Utilisez xhprof pour analyser en php7

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

ct 表示 当前这个函数调用的次数,此案例都是1次
wt 表示 函数执行时间的耗时,单位为微秒复制代码

En voyant cela, nous avons constaté que les informations que nous avons obtenues n'étaient pas très nombreuses, par exemple, nous nous soucions souvent aussi de la mémoire occupée, du processeur et d'autres indicateurs >XHPROF_FLAGS_MEMORY. Utilisation statistique de la mémoire

XHPROF_FLAGS_CPU Statistiques d'utilisation du processeurUtilisez xhprof pour analyser en php7
XHPROF_FLAGS_NO_BUILTINS Les fonctions intégrées ne sont pas comptées. Cette sortie montre que la fonction dans notre extension a été ignorée. mu représente la mémoire utilisée (octets), pmu représente la mémoire maximale utilisée (octets)
  1. <🎜. >3. Graphique xhprof

    Bien sûr, nous espérons toujours que la forme du graphique pourra être plus intuitive. Observez le goulot d'étranglement des performances, voyons comment l'utiliser.
  2. 3.1 En ce moment, nous besoin d'utiliser la bibliothèque xhprof_lib

    Lorsque nous téléchargeons le code source de xhprof, le répertoire contient déjà
  3. \xhprof_enable(
        XHPROF_FLAGS_MEMORY  
        +XHPROF_FLAGS_CPU
        +XHPROF_FLAGS_NO_BUILTINS
    );复制代码
  4. L'exécution imprime 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 d'une autre configuration lorsque nous avons introduit l'extension xhprof.so ?
Oui, dans xhprof.output_dir Sous le configuré chemin (vous devez créer le répertoire manuellement)

Si vous êtes intéressé, vous pouvez l'ouvrir et y jeter un œil. les éléments que nous avons analysés y sont stockés. Informations sur les objets sérialisés.

3.2 Configuration d'un service distinct pour accéder à nos résultats d'analyse

Nous nous dirigeons vers le répertoire xhprof_html dans le projet xhprof
Utilisez xhprof pour analyser en php7

Je crois que vous comprenez maintenant le rôle de notre run_id et de notre projet in save_run

La partie supérieure 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.
Utilisez xhprof pour analyser en php7

其余后面的 % 结尾均为对应的占比

3.3 [View Full Callgraph]

如果查看调用流程需要安装 graphviz 图形库. 这里我们推荐手动安装 graphviz 2.24.0 这个版本(亲自踩坑,2.40不支持)

 yum -y install libtool-ltdl-develcd /data/graphviz-2.24.0

./configure
make
make install复制代码
Utilisez xhprof pour analyser en php7

红色部分和黄色部分重点关心下,如果感觉只想分析某个流程, 可以点击到某个方法里面再点击【View Full Callgraph】查看图表

4. 问题点

我们在上面使用xhprof的时候发现了强依赖, 在代码中引入了 xhprof 安装包里的几个类.

include_once  &#39;/data/xhprof-master/xhprof_lib/utils/xhprof_lib.php&#39;;
include_once  &#39;/data/xhprof-master/xhprof_lib/utils/xhprof_runs.php&#39;;复制代码

这里我们可以使用composer包引用来实现相同功能, 这里推荐引入 pbweb/xhprof 包。

5. 结束

希望大家工作开心

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel PHP
1543
276
Tigne de performance de cartographie relationnelle d'objet (ORM) dans PHP Tigne de performance de cartographie relationnelle d'objet (ORM) dans PHP Jul 29, 2025 am 05:00 AM

Évitez N 1 Problèmes de requête, réduisez le nombre de requêtes de base de données en chargeant à l'avance des données associées; 2. Sélectionnez uniquement les champs requis pour éviter de charger des entités complètes pour enregistrer la mémoire et la bande passante; 3. Utilisez raisonnablement les stratégies de cache, telles que le cache secondaire de la doctrine ou les résultats de requête à haute fréquence de cache de Doctrine; 4. Optimisez le cycle de vie de l'entité et appelez régulièrement () pour libérer la mémoire pour empêcher le débordement de la mémoire; 5. Assurez-vous que l'indice de base de données existe et analysez les instructions SQL générées pour éviter les requêtes inefficaces; 6. Désactiver le suivi automatique des changements dans les scénarios où les modifications ne sont pas nécessaires et utilisez des tableaux ou des modes légers pour améliorer les performances. L'utilisation correcte de l'ORM nécessite de combiner la surveillance SQL, la mise en cache, le traitement par lots et l'optimisation appropriée pour garantir les performances de l'application tout en maintenant l'efficacité du développement.

VSCODE Settings.json Emplacement VSCODE Settings.json Emplacement Aug 01, 2025 am 06:12 AM

Le fichier SetfitS.JSON est situé dans le chemin de niveau utilisateur ou au niveau de l'espace de travail et est utilisé pour personnaliser les paramètres VScode. 1. Chemin de niveau utilisateur: Windows est C: \ Users \\ AppData \ Roaming \ Code \ User \ Settings.json, macOS est /users//library/applicationsupport/code/user/settings.json, Linux est /home//.config/code/user/settings.json; 2. Chemin au niveau de l'espace de travail: .vscode / Paramètres dans le répertoire racine du projet

La révolution sans serveur: déploiement des applications PHP évolutives avec BREF La révolution sans serveur: déploiement des applications PHP évolutives avec BREF Jul 28, 2025 am 04:39 AM

BREF permet aux développeurs PHP de créer des applications évolutives et rentables sans gérer les serveurs. 1.BREF apporte PHP à Awslambda en fournissant une couche d'exécution PHP optimisée, prend en charge PHP8.3 et d'autres versions, et s'intègre de manière transparente à des frameworks tels que Laravel et Symfony; 2. Les étapes de déploiement incluent: l'installation de BREF à l'aide de composer, configurer Serverless.yml pour définir des fonctions et des événements, tels que les points de terminaison HTTP et les commandes artisanales; 3. Exécutez la commande ServerlessDeploy pour terminer le déploiement, configurez automatiquement Apigeway et générez des URL d'accès; 4. Pour les restrictions de lambda, BREF fournit des solutions.

Construire des objets immuables en PHP avec des propriétés en lecture Construire des objets immuables en PHP avec des propriétés en lecture Jul 30, 2025 am 05:40 AM

ReadonlypropertiesInphp8.2CanlybeassignedonceinthestrustructoratDeclarationandcannotBemodifiedAfterward, applicationmutabilityaThelanguageLevel.2.Toachievedeep-immutability, webutableTypeSlikEarrayinArrayobjectorUSustomymutability, webutilletypeslikearraysinarrayobjectoruseseCustomMutabeColEctionSucha.

Une plongée profonde dans le mécanisme de collecte interne de PHP Une plongée profonde dans le mécanisme de collecte interne de PHP Jul 28, 2025 am 04:44 AM

Le mécanisme de collecte des ordures de PHP est basé sur le comptage de référence, mais les références circulaires doivent être traitées par un collecteur de déchets circulaires périodique; 1. Le nombre de références libère la mémoire immédiatement lorsqu'il n'y a pas de référence à la variable; 2. Référence La référence fait que la mémoire ne peut pas être automatiquement libérée, et cela dépend de GC pour le détecter et le nettoyer; 3. GC est déclenché lorsque la "racine possible" Zval atteint le seuil ou appelle manuellement gc_collect_cycles (); 4. Les applications PHP à long terme devraient surveiller GC_Status () et appeler GC_COLLECT_CYCLES () à temps pour éviter la fuite de mémoire; 5. Les meilleures pratiques incluent d'éviter les références circulaires, en utilisant gc_disable () pour optimiser les zones clés de performance et les objets de déréférence via la méthode Clear () d'Orm.

Intégration de PHP aux modèles d'apprentissage automatique Intégration de PHP aux modèles d'apprentissage automatique Jul 28, 2025 am 04:37 AM

UseArestapitobridgePhpandmlModelsByrunningTheModelinpythonviaflaskorfastapiandCallingitfrompsingCurlorBuzzle.2.Runpythonscripts est ventilateur

Passez l'exemple de l'exemple de journalisation du middleware http Passez l'exemple de l'exemple de journalisation du middleware http Aug 03, 2025 am 11:35 AM

HTTP Log Middleware dans GO peut enregistrer les méthodes de demande, les chemins de requête, la propriété intellectuelle du client et le temps qui prend du temps. 1. Utilisez http.handlerfunc pour envelopper le processeur, 2. Enregistrez l'heure de début et l'heure de fin avant et après l'appel Suivant.Servehttp, 3. Obtenez le vrai client IP via R.RemoteAddr et X-Forwared-For Headers, 4. Utilisez le log.printf aux journaux de demande de sortie, 5. L'exemple de code complet a été vérifié pour s'exécuter et convient au démarrage d'un projet petit et moyen. Les suggestions d'extension incluent la capture des codes d'état, la prise en charge des journaux JSON et le suivi des ID de demande.

Exemple de bascule du mode sombre CSS Exemple de bascule du mode sombre CSS Jul 30, 2025 am 05:28 AM

Tout d'abord, utilisez JavaScript pour obtenir les préférences du système utilisateur et les paramètres de thème stockés localement et initialiser le thème de la page; 1. La structure HTML contient un bouton pour déclencher la commutation du sujet; 2. CSS utilise: Root pour définir des variables de thème brillantes, la classe de mode. Dark définit les variables de thème sombres et applique ces variables via var (); 3. JavaScript détecte préfère-Color-Scheme et lit LocalStorage pour déterminer le thème initial; 4. Communiquez la classe en mode noir sur l'élément HTML lorsque vous cliquez sur le bouton et enregistre l'état actuel vers LocalStorage; 5. Tous les changements de couleur sont accompagnés d'une animation de transition de 0,3 seconde pour améliorer l'utilisateur

See all articles