Heim > Artikel > Backend-Entwicklung > Methode 1 zur Verwendung von XHProf zur Analyse von PHP-Leistungsengpässen
wget http://pecl.php.net/get/xhprof-0.9.4.tgz tar zxf xhprof-0.9.4.tgz cd xhprof-0.9.4/extension/ sudo phpize ./configure sudo make sudo make install cd ../
php.ini konfigurieren
[xhprof] extension=xhprof.so xhprof.output_dir=/tmp
Hinweis: xhprof wurde schon lange nicht mehr aktualisiert. PHP7 kann https verwenden ://github.com/phacility/….
Sie müssen die beiden Verzeichnisse im xhprof-komprimierten Paket in das angegebene Verzeichnis kopieren (vorausgesetzt, sie sind als /work/xhprof/
definiert):
mkdir /work/xhprof/ cp -a xhprof_html/ /work/xhprof/ cp -a xhprof_lib/ /work/xhprof/
Dann wurde im Projekt-Framework die Eintragsdatei hinzugefügt:
xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU); register_shutdown_function(function() { $xhprof_data = xhprof_disable(); if (function_exists('fastcgi_finish_request')){ fastcgi_finish_request(); } include_once "/work/xhprof/xhprof_lib/utils/xhprof_lib.php"; include_once "/work/xhprof/xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, 'xhprof'); });
Code-Analyse: $xhprof_data
zeichnet alle Funktionsaufrufzeiten und den CPU-Speicherverbrauch während der Programmausführung auf. Welche Indikatoren können insbesondere über die Parameter von xhprof_enable gesteuert werden? , derzeit unterstützt. Die Parameter sind:
HPROF_FLAGS_NO_BUILTINS
Alle integrierten (internen) Funktionen überspringen.
XHPROF_FLAGS_CPU
CPU-Daten zu den Ausgabeleistungsdaten hinzufügen.
XHPROF_FLAGS_MEMORY
Speicherdaten zu den Ausgabeleistungsdaten hinzufügen. Die Verarbeitung nach
hat nichts mit der xhprof-Erweiterung zu tun. Sie besteht grob darin, eine Speicherklasse XHProfRuns_Default
zu schreiben und $xhprof_data
in einem Verzeichnis zu speichern 🎜> an Das Ergebnis wird in das aktuelle Verzeichnis ausgegeben. Wenn es nicht angegeben ist, wird das XHProfRuns_Default(__DIR__)
in der php.ini
-Konfigurationsdatei gelesen. Wenn es noch nicht angegeben ist, wird es an xhprof.output_dir
ausgegeben. /tmp
und xhprof_enable
erscheinen paarweise, eines steht am Anfang des laufenden Codes und das andere am Ende. In der Mitte befindet sich der zu analysierende Code. xhprof_disable
gespeichert. xhprof.output_dir
server { listen 80; server_name xhprof.test.com; root /work/xhprof/xhprof_html; index index.html index.php; 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; } }und dann den virtuellen Host xhprof.test.com konfigurieren. Starten Sie nginx neu und öffnen Sie xhprof.test.com, um den Effekt zu sehen:
yum install -y libpng yum install -y graphvizWirkung:
zu speichern: /work/xhprof/
xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU); register_shutdown_function(function() { $xhprof_data = xhprof_disable(); if (function_exists('fastcgi_finish_request')){ fastcgi_finish_request(); } include_once "/work/xhprof/xhprof_lib/utils/xhprof_lib.php"; include_once "/work/xhprof/xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, 'xhprof'); });Verwenden Sie die automatische Ladefunktion von PHP, um diese Datei einzufügen, bevor Sie den Code ausführen und php.ini bearbeiten :
auto_prepend_file = /work/xhprof/xhprof.inc.phpDann starten Sie den PHP-Dienst neu. Dies wird für alle wirksam, die diese PHP-Umgebung verwenden. Oder schreiben Sie es in die Nginx-Konfiguration des angegebenen Projekts:
jifen.cc.conf
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PHP_VALUE "auto_prepend_file=/work/xhprof/xhprof.inc.php"; include fastcgi_params; }Starten Sie dann den Nginx-Dienst neu. Dies gilt nur für dieses Projekt. Dateien, die über auto_prepend_file und auto_append_file eingebunden werden, werden in diesem Modus geparst, mit einigen Einschränkungen, z. B. muss die Funktion vor dem Aufruf definiert werden. Ändern Sie die Sampling-FrequenzStandardmäßig wird xhprof jedes Mal ausgeführt. Wenn die Online-Umgebung so eingestellt ist, hat dies Auswirkungen auf die Leistung. xhprof.inc.php
<?php $profiling = !(mt_rand()%9); if($profiling) xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU); register_shutdown_function(function() use($profiling) { if($profiling){ $xhprof_data = xhprof_disable(); if (function_exists('fastcgi_finish_request')){ fastcgi_finish_request(); } include_once "/work/xhprof/xhprof_lib/utils/xhprof_lib.php"; include_once "/work/xhprof/xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $xhprof_runs->save_run($xhprof_data, 'xhprof'); } });ZusammenfassungIn diesem Artikel haben wir vorgestellt, wie man die PHP-Leistung basierend auf der xhprof-Erweiterung analysiert, sie im Protokoll aufzeichnet und schließlich Verwenden Sie die mit der xhprof-Erweiterung gelieferte Benutzeroberfläche, die im Web angezeigt wird. Hauptwissenspunkte:
Hinweise zur PHP-FPM-Parameterkonfiguration für PHP7+
Das obige ist der detaillierte Inhalt vonMethode 1 zur Verwendung von XHProf zur Analyse von PHP-Leistungsengpässen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!