Maison >développement back-end >tutoriel php >Comment l'extension Xhprof en php analyse les performances du projet

Comment l'extension Xhprof en php analyse les performances du projet

不言
不言original
2018-08-29 10:52:261832parcourir

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.

1.Contexte

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.

2. Étapes de fonctionnement

  1. Installation des extensions

  2. Configuration des extensions

  3. Analyse des tests

3. Installation

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

3.1 Télécharger le code source

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

3.2 Environnement de détection

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:   320160303
3.3 Compiler et installer

Générer un Makefile pour l'étape suivante Préparer la compilation

./configure
Renvoyer 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 unchanged
Démarrer compilation et installation

make && make install
Renvoyer 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. Configuration

Aprè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

Pour modifier la configuration de PHP, vous devez d'abord savoir où se trouve le fichier de configuration. Ici, vous pouvez utiliser PHP. Utilisez la commande pour afficher l'emplacement de stockage de. le fichier de configuration. La commande de référence est la suivante :

Après l'exécution de la commande, le résultat renvoyé est le suivant
php --ini

Dans 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

et le résultat de retour est. comme suit
cat /usr/local/etc/php/7.1/php.ini | grep extension_dir

4.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 =

À partir des résultats renvoyés, vous pouvez voir que l'emplacement du répertoire de stockage de l'extension est le suivant

Vous devez maintenant copiez l'extension xhprof que vous venez de compiler dans ce répertoire, reportez-vous à La commande est la suivante :
/usr/local/lib/php/pecl/20160303

Modifiez 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 suivante
vim  /usr/local/etc/php/7.1/php.ini

4.3 Redémarrer pour prendre effet
[xhprof]
extension=xhprof.so
xhprof.output_dir=/data/www/xhprof/save_output_dir

Après l'enregistrement, l'auteur redémarre php-fpm pour que la configuration prenne effet. La commande de redémarrage peut être visualisée via la commande Brew. La commande de référence est la suivante :

Une fois la commande exécutée. , les informations suivantes peuvent être vues dans les informations renvoyées
brew info php@7.1

Par 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-fpm

Une fois le redémarrage terminé , le résultat renvoyé est le suivant
brew services restart php@7.1

4.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)

Vérifiez maintenant si l'extension xhprof a été installée. La commande de référence est la suivante

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

Comment lextension Xhprof en php analyse les performances du projet

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 xhprof

5.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 :

5.1.1 Créer le répertoire du projet

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 suivante

mkdir -p /Users/song/mycode/work/test
5.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/

Ajoutez un fichier de configuration comme suit

/usr/local/etc/nginx/nginx.conf
Ajoutez 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

Dans le dossier
127.0.0.1 test.localhost
de 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

Ajoutez le code suivant au fichier

vim /Users/song/mycode/work/test/test.php
Aprè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 &#39;&#39;;
    }
}

//定义测试方法
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ésultats

Le résultat après l'exécution est celui indiqué ci-dessous
http://test.localhost/xhprof/test.php

🎜>

Comment lextension Xhprof en php analyse les performances du projetVous 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é

Comment lextension Xhprof en php analyse les performances du projet

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

Comment lextension Xhprof en php analyse les performances du projet

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!

Déclaration:
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