Was ist XHProf?
XHProf ist ein leichter, mehrschichtiger Leistungsmessanalysator. Während der Datenerfassungsphase verfolgt es die Anzahl der Aufrufe und Messdaten und zeigt das Bogendiagramm der dynamischen Aufrufe des Programms an. Es berechnet exklusive Leistungsmetriken wie verstrichene Laufzeit, CPU-Rechenzeit und Speicher-Overhead während der Berichts- und Nachbearbeitungsphase.
Die Funktionsleistungsberichterstattung kann vom Anrufer und Angerufenen beendet werden. Während der Datenerfassungsphase erkennt XHProf rekursive Funktionen durch Schleifen im Aufrufdiagramm und vermeidet Schleifen rekursiver Aufrufe durch die Zuweisung eindeutiger tiefer Namen.
Um es einfach auszudrücken: XHProf kann den Systemstatus vieler Programme für uns erfassen und verfügt über eine Reihe von Online-Kartentools, die uns detaillierte Karteninformationen liefern können.
Installation
Laden Sie einfach das Erweiterungspaket direkt von PECL herunter und installieren Sie es. Es unterscheidet sich nicht von anderen Erweiterungsinstallationen. Diese Erweiterung wird ständig aktualisiert und gewartet, sodass sie perfekt für die PHP7-Version unterstützt wird.
Befehlszeilenverwendung
xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY); //xhprof_enable( XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY); //xhprof_enable( XHPROF_FLAGS_MEMORY); //xhprof_enable(); for ($i = 0; $i <= 1000; $i++) { $a = $i * $i; } function test_application(){ for ($i = 0; $i <= 1000; $i++) { $a = $i * $i; } } test_application(); $xhprof_data = xhprof_disable(); print_r($xhprof_data); // Array // ( // [main()==>test_application] => Array // ( // [ct] => 1 // [wt] => 16 // [cpu] => 21 // [mu] => 848 // [pmu] => 0 // ) // [main()] => Array // ( // [ct] => 1 // [wt] => 115 // [cpu] => 115 // [mu] => 1416 // [pmu] => 0 // ) // )
Verwenden Sie xhprof_enable(), um den Profiler zu aktivieren. Seine Parameter sind mehrere Konstanten, was ungefähr die Anzeige von CPU-Informationen, Speicherinformationen usw. bedeutet. Wenn keine Parameter vorhanden sind, werden nur ct und wt zurückgegeben . Zwei Parameter.
Rufen Sie xhprof_disable() auf, um die Analyse zu beenden und die Analyseergebnisse zurückzugeben. Der Rückgabewert enthält den Ausführungsstatus der Hauptfunktion, also den Status unseres aktuellen Seitentestcodes. Hinzu kommt die Leistung der aufgerufenen Funktion test_application(). Der spezifische Inhalt ist:
ct: Anzahl der Anrufe
wt: Wartezeit, Millisekunden
cpu: CPU-Laufzeit, Millisekunden
mu: Speichernutzung, Bytes
-
pmu: Spitzenwert der Speichernutzung
Ja, so einfach ist das. Durch den Aufruf der beiden Funktionen können wir den Ausführungsstatus des aktuellen Skriptprogramms sehen, wie viel Speicher es belegt und wie viel CPU-Zeit es verbraucht. Praktischer ist natürlich, dass über die Webseite auch detailliertere Informationen angezeigt werden können.
Sehen Sie sich den Ergebnisbericht im Internet an
Zuerst müssen wir einige Vorbereitungen treffen. Die erste besteht darin, ein Graphviz zum Zeichnen von Grafiken zu installieren, die zweite darin, das Ergebnisspeicherverzeichnis der Datei php.ini zu ändern, und die dritte darin, den Analysecode in den Quellcode zu kopieren und unseren vorherigen Testcode zu ändern.
yum install graphviz
Im CentOS-System können wir graphviz direkt mit yum installieren. Anschließend geben wir das Ausgabeverzeichnis für xhprof in der Datei php.ini an.
xhprof.output_dir=/tmp
Als nächstes müssen wir die Verzeichnisse xhporf_html und xhporf_lib in die Quellcodedatei kopieren und sie unter der Projektdatei platzieren. Ändern Sie dann den Code, um die Ergebnisse der Leistungsanalyse zu speichern.
// ..... 上面的代码 $xhprof_data = xhprof_disable(); require 'xhprof_lib/utils/xhprof_lib.php'; require 'xhprof_lib/utils/xhprof_runs.php'; $xhprofRuns = new XHProfRuns_Default(); $runId = $xhprofRuns->save_run($xhprof_data, 'xhprof_test'); echo 'http://192.168.56.102/index.php?run=' . $runId . '&source=xhprof_test';
Dann müssen wir den Server in xhporf_html einrichten. Hier verwende ich einen einfachen PHP-S-Befehl, um ihn auszuführen.
cd xhprof_html/ php -S 0.0.0.0:80
Verwenden Sie abschließend die Linkausgabe oben, um auf diese Seite zuzugreifen, und Sie können die relevanten Informationen sehen.
Zusammenfassung
Der heutige Testcode ist nur eine einfache Einführung in die Verwendung von xhporf. Tatsächlich können diese Erweiterung und dieser Satz Analysetools in den Rahmen unseres realen Projekts integriert werden. Auf diese Weise können wir den Laufstatus des aktuellen Programms in der Testumgebung gut überwachen. Es wird jedoch immer noch nicht empfohlen, es in einer formalen Umgebung zu verwenden. Schließlich sollten Debug- oder ähnliche Leistungsanalysen nicht der Außenwelt zugänglich gemacht werden. In einer formalen Umgebung können wir Analysen und Optimierungen über die Befehlszeile durchführen.
Testcode:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/%E7%AE%80%E5%8D%95%E5%AD%A6%E4%B9%A0PHP%E4%B8%AD%E7%9A%84%E5%B1%82%E6%AC%A1%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%99%A8.php
Empfohlenes Lernen: php-Video-Tutorial