Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie den hierarchischen Profiler in PHP

So verwenden Sie den hierarchischen Profiler in PHP

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-06-01 17:20:031447Durchsuche

Dieser Artikel gibt Ihnen eine kurze Einführung in den hierarchischen Leistungsanalysator in PHP. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

So verwenden Sie den hierarchischen Profiler in PHP

Wenn wir in PHP debuggen müssen, verwenden wir normalerweise Memory_get_usage(), um die Speichernutzung zu überprüfen. Wenn Sie jedoch die CPU-Auslastung des aktuellen Skripts sehen möchten, gibt es keine vorgefertigte Funktion.

PHP stellt uns jedoch auch eine Erweiterung zur Verfügung: XHProf, eine Open-Source-Erweiterung von FaceBook. Sie kann uns helfen, einige Leistungsbedingungen zu erkennen, wenn das aktuelle Skript ausgeführt wird.

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 &#39;xhprof_lib/utils/xhprof_lib.php&#39;;
require &#39;xhprof_lib/utils/xhprof_runs.php&#39;;

$xhprofRuns = new XHProfRuns_Default();
$runId = $xhprofRuns->save_run($xhprof_data, &#39;xhprof_test&#39;);

echo &#39;http://192.168.56.102/index.php?run=&#39; . $runId . &#39;&source=xhprof_test&#39;;

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

Das obige ist der detaillierte Inhalt vonSo verwenden Sie den hierarchischen Profiler in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen