Maison >développement back-end >tutoriel php >Comment l'extension Xhprof en php analyse les performances du projet
Le contenu de cet article explique comment l'extension Xhprof en PHP analyse les performances du projet. Elle a une certaine valeur de référence. J'espère que cela vous sera utile.
Le projet est sur le point d'être lancé. Je souhaite utiliser certains outils pour analyser la stabilité et l'efficacité du code. Je me suis souvenu de l'extension xhprof que j'ai utilisée dans mon équipe précédente. ; parce que j'ai changé pour un nouvel ordinateur, cette extension doit donc être recompilée. Le processus d'installation et de dépannage réel est maintenant entièrement enregistré pour faciliter votre propre révision et aider davantage de lecteurs.
Installation des extensions
Configuration des extensions
Analyse des tests
L'extension xhprof PHP n'est pas fournie avec. Je dois l'installer séparément avant de pouvoir l'utiliser après l'installation. méthode d'installation du code ici. Le processus d'installation est le suivant
xhprof est déjà relativement ancien sur la version officielle PECL de PHP. Par conséquent, vous devez télécharger la version la plus récente de xhprof sur GitHub Code source, reportez-vous aux commandes suivantes
git clone https://github.com/longxinH/xhprof
Entrez le dossier compilé, référez-vous à la commande
cd xhprof/extension/
Maintenant, je dois compiler le code source, avant de compiler. Vous pouvez utiliser phpze pour détecter l'environnement PHP. La commande de référence est la suivante :
phpize
Le résultat renvoyé est le suivant. 🎜>
Configuring for: PHP Api Version: 20160303 Zend Module Api No: 20160303 Zend Extension Api No: 3201603033.3 Compiler et installer Générer un Makefile pour l'étape suivante Préparer la compilation
./configureRenvoyer les résultats comme suit
creating libtool appending configuration tag "CXX" to libtool configure: creating ./config.status config.status: creating config.h config.status: config.h is unchangedDémarrer compilation et installation
make && make installRenvoyer les résultats comme suit
Build complete. Don't forget to run 'make test'. Installing shared extensions: /usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/À partir des informations renvoyées, vous pouvez voir que l'installation est terminée et que l'emplacement où le fichier d'extension est stocké est affiché4. ConfigurationAprès avoir compilé et installé le code source, l'auteur doit également configurer le dossier de configuration PHP et effectuer une configuration simple de xhprof. Le processus de fonctionnement est le suivant
4.1 Rechercher l'emplacement du fichier de configuration
php --iniDans le résultat renvoyé, vous pouvez voir plusieurs configurations. chemin des fichiers, ce dont l'auteur a besoin est le deuxième fichier
Configuration File (php.ini) Path: /usr/local/etc/php/7.1 Loaded Configuration File: /usr/local/etc/php/7.1/php.ini Scan for additional .ini files in: /usr/local/etc/php/7.1/conf.d Additional .ini files parsed: /usr/local/etc/php/7.1/conf.d/ext-opcache.ini
php.ini
pour afficher l'emplacement de stockage du répertoire d'extension. La commande de référence est la suivante
cat /usr/local/etc/php/7.1/php.ini | grep extension_dir4.2 Modifier la configuration
extension_dir = "/usr/local/lib/php/pecl/20160303" ; extension_dir = "ext" ; Be sure to appropriately set the extension_dir directive. ;sqlite3.extension_dir =
/usr/local/lib/php/pecl/20160303Modifiez le fichier de configuration via l'éditeur vim La commande de référence est la suivante :
cp /usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/xhprof.so /usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/
.
Ajoutez la configuration xhprof à la fin du fichier de configuration et personnalisez-en une pour enregistrer le xhprof généré. La configuration de référence du fichier source est la suivantevim /usr/local/etc/php/7.1/php.ini4.3 Redémarrer pour prendre effet
[xhprof] extension=xhprof.so xhprof.output_dir=/data/www/xhprof/save_output_dir
brew info php@7.1Par conséquent, la commande de redémarrage PHP-FPM construite par l'auteur est la suivante :
To have launchd start php@7.1 now and restart at login: brew services start php@7.1 Or, if you don't want/need a background service you can just run: php-fpmUne fois le redémarrage terminé , le résultat renvoyé est le suivant
brew services restart php@7.14.4 Vérifiez l'installation
Stopping `php@7.1`... (might take a while) ==> Successfully stopped `php@7.1` (label: homebrew.mxcl.php@7.1) ==> Successfully started `php@7.1` (label: homebrew.mxcl.php@7.1)
Exécution de la commande Après cela, le résultat de l'installation réussie de l'extension affichera xhprof, comme indiqué ci-dessous
php -m | grep xhprof
5. Test
Après l'opération ci-dessus, l'auteur l'a installé et configuré avec succès. Je dois maintenant utiliser le code PHP pour vérifier l'effet d'analyse de xhprof5.1 Créer un hôte virtuel<.>Créez d'abord un hôte virtuel, laissez les utilisateurs y accéder via un navigateur. Pour créer un hôte virtuel, vous devez disposer d'un répertoire racine et modifier le fichier de configuration nginx. Les opérations spécifiques sont les suivantes :
Créer le répertoire racine du projet, la commande de référence est la suivante
Une fois la création réussie, l'auteur doit copier une partie du code extrait par git dans le répertoire racine du projet. La commande de référence est la suivantemkdir -p /Users/song/mycode/work/test5.1.2 Modifier le fichier de configuration Ajouter un fichier de configuration, reportez-vous à la commande
cp -r xhprof/xhprof_html /Users/song/mycode/work/test/ cp -r xhprof/xhprof_lib /Users/song/mycode/work/test/
/usr/local/etc/nginx/nginx.confAjoutez une ligne d'enregistrements d'analyse dans le fichier
pour enregistrer le contenu Comme suit :
server { listen 80; server_name test.localhost; root /Users/song/mycode/work/test; index index.html index.htm index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
5.2 Nouveau code de test /etc/hosts
127.0.0.1 test.localhostde l'entrepôt git, il y a déjà un code de démonstration, mais les commentaires sur ce code sont tous en anglais De plus, la méthode de composition n'est pas facile à comprendre pour l'auteur, donc. J'ai réédité ce fichier. Les étapes de référence sont les suivantes : Utilisez vim pour créer un nouveau fichier PHP
examples
vim /Users/song/mycode/work/test/test.phpAprès avoir enregistré le code, accédez à l'adresse URL correspondante via le navigateur. L'adresse URL est la suivante
<?php //加载所需文件 include_once "./xhprof_lib/utils/xhprof_lib.php"; include_once "./xhprof_lib/utils/xhprof_runs.php"; //随意定义一个函数 function test($max) { for ($idx = 0; $idx < $max; $idx++) { echo ''; } } //定义测试方法 function a() { test(rand(1000,5000)); } //开始分析 xhprof_enable(); //需要分析的函数 a(); //结束分析 $xhprof_data = xhprof_disable(); //实例化xhprof类 $xhprof_runs = new XHProfRuns_Default(); //获取当前当前页面分析结果 $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo"); echo "\nhttp://test.localhost/xhprof/xhprof_html/index.php?run=$run_id&source=xhprof_foo\n";5.3 Analyse des résultatsLe résultat après l'exécution est celui indiqué ci-dessous
http://test.localhost/xhprof/test.php
Vous pouvez voir une adresse URL sur la page. Après avoir copié et ouvert cette adresse URL, vous pouvez voir les résultats de l'analyse de ce code, comme indiqué. ci-dessous montré
Il y a une liste sur la page, indiquant le temps consommé par chaque méthode. Si vous estimez que la liste n'est pas assez claire, cliquez sur Le lien peut générer directement une image, comme le montre la figure ci-dessousView Full Callgraph
Dans la figure, il est clair que le temps d'exécution est consommé en la méthode de test , afin que l'auteur puisse effectuer une optimisation ciblée pour cette méthode. Recommandations associées :
Extension de surveillance des performances PHP xhprof
Utiliser l'extension xhprof (PHP) pour l'analyse des performances WEB
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!