現在の位置: ホーム> 最新記事一覧> getUsage()TopやHTOPなどの外部監視ツールを交換できますか? PHPで実装する方法は?

getUsage()TopやHTOPなどの外部監視ツールを交換できますか? PHPで実装する方法は?

M66 2025-06-27

Linux Systemsでは、 TOPHTOPが一般的に使用される外部ツールであり、ユーザーがリアルタイムでシステムのパフォーマンスを監視し、CPU、メモリ、プロセスなどに関する詳細情報を表示するのに役立ちます。GetUsage()は、プロセスリソース使用量に関する情報を取得できるPHPによって提供される機能です。それでは、 getUsage()は、 TOPHTOPなどの外部監視ツールを置き換えることができますか?この記事でこの問題を検討し、PHPで同様の機能を実装する方法について説明します。

1。getUsage ()関数の紹介

getUsage()は、プロセスリソースの使用に関する詳細情報を返すPHPに組み込まれた機能です。この関数は通常、プロセスのCPU使用時間、メモリ使用量などを取得するために使用されますが、 TOPHTOPなどのシステムレベルのリアルタイム監視データを提供しません。システム全体のリソースステータスではなく、関数を呼び出すPHPプロセスのリソース使用量のみを提供します。

返品値

getUsage()関数は、プロセスリソースの使用に関する統計を含む配列を返します。通常、配列の内容には以下が含まれます。

  • ru_maxrss :プロセスの最大居住メモリセット(ユニット:バイト)

  • RU_IXRSS :プロセス共有メモリ使用(ユニット:バイト)

  • ru_idrss :非共有メモリ使用量を処理する(ユニット:バイト)

  • ru_isrss :プロセス共有ライブラリの使用(ユニット:バイト)

  • ru_minflt :ページミス数(ユーザー状態)

  • ru_majflt :ページが欠落しているページの数(カーネル状態)

  • RU_NSWAP :交換数

  • ru_inblock :ブロック操作の数を入力します

  • Ru_oublock :出力ブロック操作

  • ru_msgsnd :送信されるメッセージの数

  • RU_MSGRCV :受信したメッセージの数

  • RU_SIGNALS :受信した信号の数

  • RU_NVCSW :コンテキストスイッチング時間の数(ユーザー状態)

  • ru_nivcsw :コンテキストスイッチの数(カーネル状態)

2。getTrusage ()TOP / HTOPの違い

getTrusage()は、プロセスレベルのリソース使用量を提供できますが、 TOPHTOPなどの外部ツールと比較して、次の大きな違いがあります。

  • 監視範囲getUsage()は、現在のPHPスクリプトのリソース使用量のみを取得できますが、 TOPHTOPは、すべての実行プロセスを含むシステムレベルでの全体的なリソース使用量を表示できます。

  • リアルタイムTOPHTOPは、動的に変更されたリソース使用量を示すことができるリアルタイムの更新ツールであり、 getUsage()は、呼び出された場合にのみリソースデータを返すことができ、動的に更新できません。

  • 監視の粒度TOPHTOPは、プロセスステータス、CPU使用率、メモリ使用量などを含むより詳細なプロセス情報を提供しますが、 getUsage()が提供するデータは比較的簡潔で、より豊富な監視情報がありません。

  • システム情報TOPおよびHTOPは、トータルメモリ、スワップスペース、CPU負荷など、システムレベルのハードウェアリソース使用量を表示することもできます。GetUsage ()は、プロセス自体のリソース使用に関するものです。

3。PHPにプロセス監視機能を実装します

getTrusage()はTopまたはHTOPを完全に置き換えることはできませんが、特に特定のPHPスクリプトのパフォーマンス分析が必要な場合、開発者にいくつかの有用な情報を提供できます。

例:現在のPHPスクリプトのリソース使用量を取得する

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 現在のものを取得します PHP プロセスのリソース使用</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">// リソースの使用量を表示します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"最大居住者メモリセット: "</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">"ユーザーステータス CPU 時間: "</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">"カーネル状態 CPU 時間: "</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">?&gt;</span></span><span>
</span></span>

上記の例では、 getUsage()を呼び出して、現在のPHPプロセスのリソース使用量を取得し、最大居住者メモリセットやCPU時間などの情報を印刷します。このデータを通じて、開発者は操作中のスクリプトのリソース消費を理解できます。

例:PHPスクリプトメモリとCPU使用のリアルタイム監視

実行中にPHPスクリプトのリソース使用を監視する必要がある場合は、 getRusage()を定期的に呼び出してリソースの変更を計算できます。たとえば、リソースの使用は、ループで特定の時間ごとに取得でき、それにより、単純な監視システムを実装できます。

 <span><span><span class="hljs-meta">&lt;?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">// シミュレーション PHP スクリプトの実行</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">// スクリプトが実行されていると仮定します 2 2番</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">// 違いを計算します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"メモリの使用量が変化します: "</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 時間变化 (ユーザーステータス): "</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 時間变化 (カーネル状態): "</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">?&gt;</span></span><span>
</span></span>

このようにして、実行中にPHPスクリプトのリソースの変更について大まかなアイデアを得ることができます。

4. getTrusage()の制限()トップまたはHTOPを交換します

getTrusage()はPHPで特定のプロセス監視機能を提供できますが、 TOPHTOPなどのツールの完全な機能を置き換えることはできません。開発者の場合、 getTrusage()は、完全なシステム監視ツールよりも、パフォーマンスの調整を支援するツールのようなものです。リアルタイムで包括的なシステム監視が必要な場合、 TOPHTOPは間違いなく適用可能です。

ただし、PHPでのプロセスレベルのリソース監視が必要な場合は、特に特定の重要な操作を実行する場合、 GetTrusage()は依然として非常に便利なツールです。

結論は

getUsage()は、特定のプロセスリソースの使用を提供できますが、 TOPHTOPなどのシステムレベルの監視ツールを完全に置き換えることはできません。あなたの要件が特定のPHPスクリプトのパフォーマンスを監視することである場合、それは非常に効果的なツールです。ただし、包括的かつリアルタイムのシステム監視には、 TOPHTOPがさらに適した選択肢があります。