Heim  >  Artikel  >  Backend-Entwicklung  >  Wie die Erweiterung Xhprof in PHP die Leistung des Projekts analysiert

Wie die Erweiterung Xhprof in PHP die Leistung des Projekts analysiert

不言
不言Original
2018-08-29 10:52:261800Durchsuche

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.

1. Hintergrund

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.

2. Bedienschritte

  1. Erweiterungen installieren

  2. Erweiterungen konfigurieren

  3. Testanalyse

3. Installation

Die xhprof-Erweiterung ist nicht im Lieferumfang enthalten. Ich muss sie separat installieren, bevor ich die Quelle verwenden kann Code-Installationsmethode hier.

3.1 Laden Sie den Quellcode herunter

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

3.2 Erkennungsumgebung

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

3.3 Kompilieren und installieren

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

4. Konfiguration

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

4.1 Finden Sie den Speicherort heraus die Konfigurationsdatei

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 --ini
Nach 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.ini
Im zurückgegebenen Ergebnis können Sie die Pfade mehrerer Konfigurationsdateien sehen. Was der Autor benötigt, ist die zweite Datei

php.ini

Zeigen Sie den Speicherort des Erweiterungsverzeichnisses an

cat /usr/local/etc/php/7.1/php.ini | grep extension_dir
Das 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 Konfiguration

Aus den zurückgegebenen Ergebnissen können Sie den Speicherort des Erweiterungsverzeichnisses wie folgt ersehen

/usr/local/lib/php/pecl/20160303
Jetzt 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.ini
Fü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_dir
4.3 Neustart, um wirksam zu werden

Nach 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.1
Nachdem 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-fpm
Daher hat der Autor den Befehl zum Neustart von PHP-FPM wie folgt erstellt:

brew services restart php@7.1
Nach 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

Wie die Erweiterung Xhprof in PHP die Leistung des Projekts analysiert

5. Test

Nachdem der Autor den obigen Vorgang erfolgreich installiert und konfiguriert hat, muss ich den Analyseeffekt von xhprof überprüfen

5.1 Erstellen Sie einen virtuellen Host

Erstellen Sie zunächst einen virtuellen Host, damit Benutzer über einen Browser darauf zugreifen können. Um einen virtuellen Host zu erstellen, müssen Sie über ein Stammverzeichnis verfügen und die Nginx-Konfigurationsdatei bearbeiten sind wie folgt:

5.1.1 Erstellen Sie das Projektverzeichnis

Erstellen Sie das Projektstammverzeichnis wie folgt

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

Konfigurationsdatei hinzufügen, siehe Befehl

/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/hosts5.2 Neuer Testcode

Es gibt bereits einen Democode im Ordner

des Git-Repositorys, aber die Kommentare zu diesem Code sind alle auf Englisch und die Formatierung ist Die Methode ist für den Autor nicht leicht zu verstehen, also bin ich -Bearbeitete diese Datei. Die Referenzschritte lauten wie folgt:

examplesVerwenden 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 &#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";

Nach dem Speichern Code, greifen Sie über den Browser auf die entsprechende URL-Adresse zu

http://test.localhost/xhprof/test.php

5.3 Ergebnisanalyse

Das Ergebnis nach dem Ausführen ist wie unten gezeigt

Wie die Erweiterung Xhprof in PHP die Leistung des Projekts analysiertSie 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

Wie die Erweiterung Xhprof in PHP die Leistung des Projekts analysiert

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

Wie die Erweiterung Xhprof in PHP die Leistung des Projekts analysiert

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn