In Linux -Systemen werden Top und HTOP üblicherweise externe Tools verwendet, mit denen Benutzer die Systemleistung in Echtzeit überwachen und detaillierte Informationen zu CPU, Speicher, Prozessen usw. anzeigen können. GetUSage () ist eine von PHP bereitgestellte Funktion, mit der Informationen zur Verbrauchsnutzung von Prozessressourcen erhalten werden können. Kann GetUSage () externe Überwachungstools wie Top oder HTOP ersetzen? Wir werden dieses Problem in diesem Artikel untersuchen und diskutieren, wie ähnliche Funktionen in PHP implementiert werden können.
GetUSage () ist eine integrierte Funktion in PHP, die detaillierte Informationen über die Verwendung von Prozessressourcen zurückgibt. Diese Funktion wird normalerweise verwendet, um die CPU-Nutzungszeit, die Speicherverwendung usw. des Prozesses zu erhalten, bietet jedoch keine Echtzeitüberwachungsdaten auf Systemebene wie Top oder HTOP . Es liefert nur die Ressourcenverbrauch des PHP -Prozesses, der die Funktion aufruft, und nicht den Ressourcenstatus des gesamten Systems.
Die Funktion getUsage () gibt ein Array zurück, das Statistiken zur Verbrauchsressourcenverwendung enthält. Der Inhalt eines Arrays umfasst normalerweise:
RU_MAXRSS : Der maximale residente Speichersatz des Prozesses (Einheit: Bytes)
RU_IXRSS : Process Shared Memory Nutzung (Einheit: Bytes)
RU_IDRSS : Verfahren nicht geteilte Speicherverwendung (Einheit: Bytes)
RU_ISRSS : Process Shared Library Nutzung (Einheit: Bytes)
RU_MINFLT : Anzahl der Seitenfehlungen (Benutzerzustand)
RU_MAJFLT : Anzahl der fehlenden Seiten (Kernelzustand)
ru_nswap : Anzahl der Börsen
Ru_inblock : Geben Sie die Anzahl der Blockvorgänge ein
RU_OUBLOCK : Ausgangsblockvorgänge
RU_MSGSND : Anzahl der gesendeten Nachrichten
RU_MSGRCV : Anzahl der empfangenen Nachrichten
Ru_Signals : Anzahl der empfangenen Signale
RU_NVCSW : Anzahl der Kontextschaltzeiten (Benutzerzustand)
RU_NIVCSW : Anzahl der Kontextschalter (Kernelzustand)
Obwohl GetTrusage () einige Ressourcenverbrauch auf Prozessebene liefern kann, hat es die folgenden Hauptunterschiede im Vergleich zu externen Tools wie Top und HTOP :
Überwachungsumfang : GetUSage () kann nur die Ressourcenverbrauch des aktuellen PHP -Skripts erhalten, während Top und HTOP die Gesamtressourcenverwendung auf Systemebene, einschließlich aller laufenden Prozesse, anzeigen können.
Echtzeit : Top und HTOP sind Echtzeit-Update-Tools, mit denen die Verwendung von Ressourcen dynamisch geändert werden kann, und GetUSage () kann nur zu einem bestimmten Zeitpunkt Ressourcendaten zurückgeben, wenn sie aufgerufen werden und nicht dynamisch aktualisiert werden können.
Überwachung der Granularität : Top und HTOP liefern detailliertere Prozessinformationen, einschließlich Prozessstatus, Prozentsatz des CPU -Gebrauchs, Speicherverwendung usw., während die von getUSage () bereitgestellten Daten relativ präzise sind und keine umfassenderen Überwachungsinformationen enthält.
Systeminformationen : Top und HTOP können auch die Hardware-Ressourcennutzung auf Systemebene wie Gesamtspeicher, Swap-Speicherplatz, CPU-Last usw. angezeigt, und GetUSage () geht es vollständig um die Ressourcenverwendung des Prozesses selbst.
Obwohl GetTrusage () Top oder HTOP nicht vollständig ersetzen kann, kann es den Entwicklern dennoch nützliche Informationen liefern, insbesondere wenn die Leistungsanalyse spezifischer PHP -Skripte erforderlich ist.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Holen Sie sich den aktuellen PHP Ressourcenverbrauch des Prozesses</span></span><span>
</span><span><span class="hljs-variable">$usage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getrusage</span></span><span>();
</span><span><span class="hljs-comment">// Ressourcennutzung anzeigen</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Maximal ansässiger Speichersatz: "</span></span><span> . </span><span><span class="hljs-variable">$usage</span></span><span>[</span><span><span class="hljs-string">"ru_maxrss"</span></span><span>] . </span><span><span class="hljs-string">" bytes\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Benutzerstatus CPU Zeit: "</span></span><span> . </span><span><span class="hljs-variable">$usage</span></span><span>[</span><span><span class="hljs-string">"ru_utime.tv_sec"</span></span><span>] . </span><span><span class="hljs-string">" seconds\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Kernelstaat CPU Zeit: "</span></span><span> . </span><span><span class="hljs-variable">$usage</span></span><span>[</span><span><span class="hljs-string">"ru_stime.tv_sec"</span></span><span>] . </span><span><span class="hljs-string">" seconds\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Im obigen Beispiel rufen wir GetUSage () auf, um die Ressourcenverwendung des aktuellen PHP -Vorgangs zu erhalten und Informationen wie den maximalen residenten Speichersatz und die CPU -Zeit auszudrucken. Durch diese Daten können Entwickler den Ressourcenverbrauch des Skripts während des Betriebs verstehen.
Wenn Sie die Ressourcenverwendung von PHP -Skripten während der Ausführung überwachen müssen, können Sie Getrusage () regelmäßig anrufen und Ressourcenänderungen berechnen. Beispielsweise kann die Ressourcenverwendung in einer Schleife jedes Mal erhalten werden, wodurch ein einfaches Überwachungssystem implementiert wird:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">get_usage</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">getrusage</span></span><span>();
}
</span><span><span class="hljs-variable">$startUsage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_usage</span></span><span>();
</span><span><span class="hljs-comment">// Simulation PHP Ausführung von Skripten</span></span><span>
</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// Angenommen, das Skript läuft 2 Zweite</span></span><span>
</span><span><span class="hljs-variable">$endUsage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_usage</span></span><span>();
</span><span><span class="hljs-comment">// Berechnen Sie die Differenz</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Speicherverbrauch ändert sich: "</span></span><span> . (</span><span><span class="hljs-variable">$endUsage</span></span><span>[</span><span><span class="hljs-string">'ru_maxrss'</span></span><span>] - </span><span><span class="hljs-variable">$startUsage</span></span><span>[</span><span><span class="hljs-string">'ru_maxrss'</span></span><span>]) . </span><span><span class="hljs-string">" bytes\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"CPU Zeit变化 (Benutzerstatus): "</span></span><span> . (</span><span><span class="hljs-variable">$endUsage</span></span><span>[</span><span><span class="hljs-string">'ru_utime.tv_sec'</span></span><span>] - </span><span><span class="hljs-variable">$startUsage</span></span><span>[</span><span><span class="hljs-string">'ru_utime.tv_sec'</span></span><span>]) . </span><span><span class="hljs-string">" seconds\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"CPU Zeit变化 (Kernelstaat): "</span></span><span> . (</span><span><span class="hljs-variable">$endUsage</span></span><span>[</span><span><span class="hljs-string">'ru_stime.tv_sec'</span></span><span>] - </span><span><span class="hljs-variable">$startUsage</span></span><span>[</span><span><span class="hljs-string">'ru_stime.tv_sec'</span></span><span>]) . </span><span><span class="hljs-string">" seconds\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Auf diese Weise können Sie während der Ausführung eine grobe Vorstellung von den Ressourcenänderungen von PHP -Skripten erhalten.
Obwohl GetTrusage () bestimmte Prozessüberwachungsfunktionen in PHP bereitstellen kann, kann es die vollständigen Funktionen von Tools wie Top oder HTOP nicht ersetzen. Für Entwickler ist GetTrusage () eher ein Tool, um die Leistung als ein komplettes Systemüberwachungswerkzeug zu stimmen. Wenn Sie Echtzeit- und umfassende Systemüberwachung benötigen, sind Top und HTOP zweifellos eher anwendbar.
Wenn Sie jedoch die Ressourcenüberwachung auf Prozessebene in PHP möchten, ist GetTrusage () immer noch ein sehr nützliches Tool, insbesondere bei der Ausführung bestimmter kritischer Vorgänge, mit dem Entwickler die Engpässe der Prozessleistung in Echtzeit erhalten und analysieren können.
GetUSage () kann eine bestimmte Verfahrensressourcenverwendung bereitstellen, es kann jedoch keine Überwachungstools auf Systemebene wie Top oder HTOP vollständig ersetzen. Wenn Sie die Leistung eines bestimmten PHP -Skripts überwachen müssen, ist es ein sehr effektives Tool. Für umfassende und Echtzeit-Systemüberwachung sind Top und HTOP jedoch immer noch eine bessere Auswahl.