Cet article vous apporte à que le contenu est sur PHP dans l’expansion que xhprof comment analyser les performances du projet, il est une certaine valeur de référence, il y a qu'un besoin d’amis peut faire référence, je l’espère pour vous aider.
I. CONTEXTE
Projet est sujet à aller en ligne, à utiliser certains outils pour analyser la stabilité et l’efficacité du Code, pensez à l’équipe précédente, utilisé dans l’extension xhprof, en raison du changement du nouvel ordinateur, donc besoin de recompiler cette extension, l’installation et le processus de diagnostic réel est entièrement documentée, afin qu’ils puissent examiner et aider plus de lecteurs.
Deuxièmement, les étapes d’utilisation
Installation d’extensions
Configuration des extensions
Analyse des tests
III. Installation
Xhprof étendue PHP n’apporte pas son propre, besoin l’auteur de l’installer seul, après installation peut être utilisée, l’auteur ici en utilisant la méthode d’installation de source code, le processus d’installation est la suivante
3.1 télécharger Source code
Xhprof officielles PHP PECL ci-dessus a été relativement ancien, version PHP de l’auteur pour PHP7.1 C’est pourquoi, la nécessité de télécharger le code source relativement nouveau par GitHub xhprof, commandes de référence sont les suivantes
git clone https://github.com/longxinH/xhprof
3.2 détection environnement
Allez dans le dossier compilé, reportez-vous à la commande
cd xhprof/extension/
Maintenant, l’auteur a besoin de compiler le code source, avant la compilation peut utiliser Phpze pour détecter l’environnement de PHP, la commande de référence est la suivante :
phpize
Retourne les résultats suivants
Configuring for:PHP Api Version: 20160303Zend Module Api No: 20160303Zend Extension Api No: 320160303
3.3 compiler et installer
Générer des Makefile pour se préparer à la prochaine compilation
./configure
Retourne les résultats suivants
creating libtoolappending configuration tag "CXX" to libtoolconfigure: creating ./config.statusconfig.status: creating config.hconfig.status: config.h is unchanged
Lancer la compilation et l’installer
make && make install
Retourne les résultats suivants
Build complete.Don't forget to run 'make test'.Installing shared extensions: /usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/
D’après les informations en retour, vous pouvez voir que l’installation est terminée et que l’emplacement où le fichier d’extension est stocké est affiché
IV. Configuration
Après la compilation et l’installation de code source, l’auteur doit également faire une configuration simple du dossier de configuration de PHP et le Xhprof, le processus de fonctionnement est le suivant
4.1 trouver l’emplacement de fichier de configuration
Pour modifier la configuration de PHP, vous devez d’abord savoir où est le fichier de configuration, où vous pouvez afficher l’emplacement du fichier de configuration par le biais de commandes PHP, avec la commande suivante :
php --ini
Après l’exécution de la commande, les résultats sont retournés comme suit
Configuration File (php.ini) Path: /usr/local/etc/php/7.1Loaded Configuration File: /usr/local/etc/php/7.1/php.iniScan for additional .ini files in: /usr/local/etc/php/7.1/conf.dAdditional .ini files parsed: /usr/local/etc/php/7.1/conf.d/ext-opcache.ini
Dans le résultat, vous pouvez voir le chemin d’accès de plusieurs fichiers de configuration, et ce que j’ai besoin est un second fichierphp.ini
Afficher l’emplacement de stockage de répertoire étendu, la référence de commande est la suivante
cat /usr/local/etc/php/7.1/php.ini | grep extension_dir
Retourne les résultats suivants
extension_dir = "/usr/local/lib/php/pecl/20160303"; extension_dir = "ext"; Be sure to appropriately set the extension_dir directive.;sqlite3.extension_dir =
4.2 modification de la configuration
Dans les résultats renvoyés, vous constatez que l’emplacement du répertoire de stockage prolongé est la suivante
/usr/local/lib/php/pecl/20160303
Maintenant vous devez copier l’extension xhprof que vous juste de compiler dans le répertoire avec la commande 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/
Modifiez le fichier de configuration par le biais de l’éditeur Vim, avec la commande suivante
vim /usr/local/etc/php/7.1/php.ini
Ajouter la configuration de la xhprof à la fin du fichier de configuration et personnaliser une configuration de référence de fichier source pour sauver la build Xhprof comme suit
[xhprof]extension=xhprof.soxhprof.output_dir=/data/www/xhprof/save_output_dir
4.3 redémarrage prend effet
Après l’enregistrement, l’auteur redémarre php-fpm laisse sa configuration prennent effet, la commande de redémarrage est consultable par le biais de la commande de l’infusion, la référence de commande est la suivante :
brew info php@7.1
Une fois la commande exécutée, vous pouvez voir les informations suivantes dans les informations renvoyées
To have launchd start php@7.1 now and restart at login: brew services start php@7.1Or, if you don't want/need a background service you can just run: php-fpm
Par conséquent, l’auteur construit le redémarrage PHP-FPM commande comme suit :
brew services restart php@7.1
Lorsque le redémarrage est terminé, les résultats sont retournés comme suit
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)
4.4 validation Installation
Vérifier maintenant que l’extension xhprof est installée et que la commande de référence est comme suit
php -m | grep xhprof
Une fois la commande exécutée, le résultat de l’extension d’une installation réussie s’affiche Xhprof, comme illustré dans la
V. essais
Après l’opération ci-dessus, l’auteur a correctement installé et configuré, maintenant besoin d’utiliser le code PHP pour vérifier l’effet de l’analyse de xhprof
5.1 création d’un hôte virtuel
Tout d’abord créer un hôte virtuel afin que les utilisateurs peuvent accéder à l’accès via le navigateur, créer un hôte virtuel il fallait avoir un répertoire racine et modifier le fichier de configuration Nginx, comme suit :
5.1.1 créer un catalogue de projet
Créer un répertoire racine du projet avec la commande suivante
mkdir -p /Users/song/mycode/work/test
Après que la création est réussie, l’auteur doit copier une partie du code précédemment abaissé par git pour le répertoire racine du projet, la commande de référence est la suivante
cp -r xhprof/xhprof_html /Users/song/mycode/work/test/cp -r xhprof/xhprof_lib /Users/song/mycode/work/test/
5.1.2 éditer le fichier de configuration
Ajouter des fichiers de configuration, commandes de référence
/usr/local/etc/nginx/nginx.conf
Ajoutez un fichier de configuration 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; } }
Dans/etc/hostsAjouter une ligne d’enregistrements analysés dans le fichier et le dossier se lit comme suit :
127.0.0.1 test.localhost
5.2 créer un nouveau code de test
Dans le dépôt Git.examplesDossier, il y a déjà un code de démonstration, mais l’annotation de ce code est en anglais, et méthode de composition n’est pas facile pour l’auteur de comprendre, donc l’auteur re-édité ce fichier, reportez-vous aux étapes de la commande suivante
Créer un nouveau fichier PHP avec vim
vim /Users/song/mycode/work/test/test.php
Ajoutez le code suivant au fichier
≪ ? Php / / charge les fichiers requis include_once «. / xhprof_lib/utils/xhprof_lib.php » ; include_once « ./xhprof_lib/utils/xhprof_ Runs.php « ; //arbitrarily définir un test de fonction de fonction ($max) {pour ($idx = 0 ; $idx le $max de la $IDX + +) {echo ' ; }} //Defines la méthode de test A function () {test (1000,5000) ;} Commencer l’analyse de Xhprof_enable () ; //function un () à analyser ; analyse //end $xhprof_data = Xhprof_disable () ; //instantiation Xhprof classe $xhprof_runs = new XHProfRuns_ Par défaut () ; //Gets le courant de la page résultats de l’analyse $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 » ;
Après avoir enregistré le code, accéder à l’adresse URL correspondante via votre navigateur, comme indiqué dans l’adresse URL ci-dessous
http://test.localhost/xhprof/test.php
5.3 résultats analyse
Post-exécution résultats, tels que
Après vous pouvez voir une adresse URL dans la page, copiez et ouvrir l’adresse URL, vous pouvez voir les résultats de l’analyse du présent code, comme illustré dans la
Il y a une liste sur la page qui affiche combien de temps chaque méthode consomme et si vous sentez que la liste n’est pas assez claire, cliquez sur leView Full CallgraphLiens peut générer une photo directement, comme illustré dans la
Dans le diagramme, il est clair que la durée d’exécution est consommée sur la méthode d’essai, donc l’auteur peut être ciblé pour optimiser cette méthode.