Heim > Artikel > Backend-Entwicklung > Wie die Erweiterung Xhprof in PHP die Leistung des Projekts analysiert
Der Inhalt dieses Artikels befasst sich mit der Analyse der Leistung des Projekts durch die Erweiterung Xhprof. Ich hoffe, dass er für Sie hilfreich ist.
Das Projekt steht kurz vor dem Start. Ich möchte einige Tools verwenden, um die Stabilität und Effizienz des Codes zu analysieren ; Da ich auf einen neuen Computer umgestiegen bin, muss diese Erweiterung jetzt vollständig aufgezeichnet werden, um Ihre eigene Überprüfung zu erleichtern und mehr Lesern zu helfen.
Erweiterungen installieren
Erweiterungen konfigurieren
Testanalyse
Die xhprof-Erweiterung ist nicht im Lieferumfang enthalten. Ich muss sie separat installieren, bevor ich die Quelle verwenden kann Code-Installationsmethode hier.
xhprof ist in der offiziellen PHP-Version bereits relativ alt. Sie müssen die neuere Version von xhprof auf GitHub herunterladen. Gehen Sie zum Quellcode wie folgt vor:
git clone https://github.com/longxinH/xhprof
Geben Sie den kompilierten Ordner ein und lesen Sie den Befehl
cd xhprof/extension/
Jetzt muss ich den Quellcode kompilieren. Vor dem Kompilieren können Sie phpze verwenden. Um die PHP-Umgebung zu erkennen, lautet der Referenzbefehl wie folgt:
phpize
Das Rückgabeergebnis lautet wie folgt
Configuring for: PHP Api Version: 20160303 Zend Module Api No: 20160303 Zend Extension Api No: 320160303
Makefile generieren, um den nächsten Schritt der Kompilierung vorzubereiten
./configure
Das Rückgabeergebnis ist wie folgt
creating libtool appending configuration tag "CXX" to libtool configure: creating ./config.status config.status: creating config.h config.status: config.h is unchanged
Kompilierung starten und installieren
make && make install
Das Rückgabeergebnis lautet wie folgt
Build complete. Don't forget to run 'make test'. Installing shared extensions: /usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/
Anhand der Rückgabeinformationen können Sie sehen, dass die Installation abgeschlossen wurde und die Erweiterung angezeigt wird. Der Speicherort der Datei
Nach dem Kompilieren und Installieren des Quellcodes muss der Autor auch einige einfache Konfigurationen am PHP-Konfigurationsordner und xhprof vornehmen. Der Vorgang ist wie folgt
Um die Konfiguration von PHP zu ändern, müssen Sie zunächst wissen, wo sich die Konfigurationsdatei befindet. Hier können Sie den Speicherort der Konfigurationsdatei über den PHP-Befehl überprüfen 🎜>
php --iniNach der Ausführung des Befehls lautet das zurückgegebene Ergebnis wie folgt
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.iniIm zurückgegebenen Ergebnis können Sie die Pfade mehrerer Konfigurationsdateien sehen. Was der Autor benötigt, ist die zweite Datei
php.ini
cat /usr/local/etc/php/7.1/php.ini | grep extension_dirDas Rückgabeergebnis lautet wie folgt
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 Ändern Sie die KonfigurationAus den zurückgegebenen Ergebnissen können Sie den Speicherort des Erweiterungsverzeichnisses wie folgt ersehen
/usr/local/lib/php/pecl/20160303Jetzt müssen Sie die xhprof-Erweiterung, die Sie gerade kompiliert haben, in dieses Verzeichnis kopieren.
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/Bearbeiten Sie die Konfigurationsdatei mit dem vim-Editor:
vim /usr/local/etc/php/7.1/php.iniFügen Sie die xhprof-Konfiguration am Ende der Konfigurationsdatei hinzu und passen Sie eine Referenzkonfiguration an, um die von xhprof generierte Quelldatei zu speichern folgt
[xhprof] extension=xhprof.so xhprof.output_dir=/data/www/xhprof/save_output_dir4.3 Neustart, um wirksam zu werdenNach dem Speichern hat der Autor php-fpm neu gestartet. Lassen Sie die Konfiguration wirksam werden. Der Befehl zum Neustart kann über den Befehl brew angezeigt werden folgt:
brew info php@7.1Nachdem der Befehl ausgeführt wurde, sind die folgenden Informationen in den zurückgegebenen Informationen zu sehen
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-fpmDaher hat der Autor den Befehl zum Neustart von PHP-FPM wie folgt erstellt:
brew services restart php@7.1Nach Abschluss des Neustarts lautet das Rückgabeergebnis wie folgt
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 Überprüfen Sie die InstallationÜberprüfen Sie nun, ob die xhprof-Erweiterung installiert wurde. Der Referenzbefehl lautet wie folgt
php -m | grep xhprof
ausgeführt wurde, zeigt das Rückgabeergebnis der erfolgreichen Installation der Erweiterung xhprof an, wie in der Abbildung unten gezeigt
5. Test
5.1 Erstellen Sie einen virtuellen Host
5.1.1 Erstellen Sie das Projektverzeichnis
mkdir -p /Users/song/mycode/work/test
Nachdem die Erstellung erfolgreich war, wird der Autor Der Referenzbefehl lautet wie folgt:
cp -r xhprof/xhprof_html /Users/song/mycode/work/test/ cp -r xhprof/xhprof_lib /Users/song/mycode/work/test/
5.1.2 Konfigurationsdatei bearbeiten
/usr/local/etc/nginx/nginx.conf
Fügen Sie die Konfigurationsdatei wie folgt hinzu
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; } }
Fügen Sie eine Zeile Parsing-Datensatz in der
-Datei hinzu, um den Inhalt wie folgt aufzuzeichnen:127.0.0.1 test.localhost
/etc/hosts
5.2 Neuer Testcode examples
Verwenden Sie vim, um eine neue PHP-Datei zu erstellen
vim /Users/song/mycode/work/test/test.php
Fügen Sie den folgenden Code zur Datei hinzu
<?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";
Nach dem Speichern Code, greifen Sie über den Browser auf die entsprechende URL-Adresse zu
http://test.localhost/xhprof/test.php
5.3 Ergebnisanalyse
Sie können eine URL-Adresse auf der Seite sehen. Nach dem Kopieren und Öffnen dieser URL-Adresse können Sie die Analyseergebnisse dieses Codes sehen, wie in der Abbildung unten gezeigt
Es gibt eine Liste auf der Seite, die die von jeder Methode verbrauchte Zeit anzeigt. Wenn Sie der Meinung sind, dass die Liste nicht klar genug ist, klicken Sie auf Der Link kann direkt ein Bild generieren, wie in der Abbildung unten gezeigtView Full Callgraph
In der Abbildung ist deutlich zu erkennen, dass die Ausführungszeit in Anspruch genommen wird die Testmethode, damit der Autor gezielte Optimierungen für diese Methode durchführen kann. Verwandte Empfehlungen:
PHP-Leistungsüberwachungserweiterung xhprof
Verwenden Sie die Erweiterung xhprof (PHP) für die WEB-Leistungsanalyse
Das obige ist der detaillierte Inhalt vonWie die Erweiterung Xhprof in PHP die Leistung des Projekts analysiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!