현재 위치: > 최신 기사 목록> getUsage ()가 상단 또는 HTOP와 같은 외부 모니터링 도구를 대체 할 수 있습니까? PHP에서 구현하는 방법은 무엇입니까?

getUsage ()가 상단 또는 HTOP와 같은 외부 모니터링 도구를 대체 할 수 있습니까? PHP에서 구현하는 방법은 무엇입니까?

M66 2025-06-27

Linux Systems에서 TopHTOP은 일반적으로 사용되는 외부 도구가 사용되며, 이는 사용자가 시스템 성능을 실시간으로 모니터링하고 CPU, 메모리, 프로세스 등에 대한 자세한 정보를 표시하는 데 도움이 될 수 있습니다. GetUsage () 는 PHP가 제공하는 기능으로 프로세스 리소스 사용에 대한 정보를 얻을 수 있습니다. 따라서 GetUsage ()가 상단 또는 HTOP 와 같은 외부 모니터링 도구를 대체 할 수 있습니까? 이 기사 에서이 문제를 탐색하고 PHP에서 유사한 기능을 구현하는 방법에 대해 논의 할 것입니다.

1. getUsage () 함수 소개

getUsage () 는 PHP의 내장 기능으로 프로세스 리소스 사용에 대한 자세한 정보를 반환합니다. 이 기능은 일반적으로 프로세스의 CPU 사용 시간, 메모리 사용량 등을 얻는 데 사용되지만 Top 또는 HTOP 와 같은 시스템 수준의 실시간 모니터링 데이터는 제공하지 않습니다. 전체 시스템의 리소스 상태가 아니라 기능을 호출하는 PHP 프로세스의 리소스 사용량 만 제공합니다.

반환 값

getUsage () 함수는 프로세스 리소스 사용에 대한 통계가 포함 된 배열을 반환합니다. 배열의 내용은 일반적으로 다음을 포함합니다.

  • RU_MAXRSS : 프로세스의 최대 거주 메모리 세트 (단위 : 바이트)

  • Ru_ixrss : 프로세스 공유 메모리 사용 (단위 : 바이트)

  • ru_idrss : 프로세스 비 공유 메모리 사용 (단위 : 바이트)

  • RU_ISRSS : 프로세스 공유 라이브러리 사용 (단위 : 바이트)

  • ru_minflt : 페이지 수 미스 (사용자 상태)

  • ru_majflt : 페이지 누락 페이지 수 (커널 상태)

  • Ru_nsswap : 교환 수

  • ru_inblock : 블록 작업 수를 입력하십시오

  • ru_oublock : 출력 블록 작업

  • ru_msgsnd : 전송 된 메시지 수

  • RU_MSGRCV : 수신 된 메시지 수

  • Ru_signals : 수신 된 신호 수

  • RU_NVCSW : 컨텍스트 전환 시간 수 (사용자 상태)

  • RU_NIVCSW : 컨텍스트 스위치 수 (커널 상태)

2. getTrusage ()상단 / htop 의 차이

GetTrusage ()는 일부 프로세스 레벨 리소스 사용을 제공 할 수 있지만 TopHTOP 와 같은 외부 도구와 비교하여 다음과 같은 주요 차이점이 있습니다.

  • 모니터링 범위 : getUsage ()는 현재 PHP 스크립트의 리소스 사용량 만 얻을 수있는 반면, TopHtop은 모든 실행 프로세스를 포함하여 시스템 수준에서 전체 리소스 사용량을 표시 할 수 있습니다.

  • 실시간 : TOPHTOP은 동적으로 변화하는 리소스 사용량을 보여줄 수있는 실시간 업데이트 도구이며 GetUsage ()는 호출 된 특정 순간에만 리소스 데이터를 반환 할 수 있으며 동적으로 업데이트 할 수 없습니다.

  • 과립성 모니터링 : TOPHTOP은 프로세스 상태, CPU 사용량 백분율, 메모리 사용량 등을 포함한보다 자세한 프로세스 정보를 제공하는 반면 GetUsage () 가 제공하는 데이터는 비교적 간결하며 더 풍부한 모니터링 정보가 부족합니다.

  • 시스템 정보 : TOPHTOP은 전체 메모리, 스왑 공간, CPU로드 등과 같은 시스템 수준 하드웨어 리소스 사용을 표시 할 수 있으며 GetUsage ()는 프로세스 자체의 리소스 사용에 관한 것입니다.

3. PHP에서 프로세스 모니터링 기능 구현

GetTrusage ()상단 또는 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 두번째</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에서 특정 프로세스 모니터링 기능을 제공 할 수 있지만 Top 또는 HTOP 와 같은 도구의 전체 기능을 대체 할 수는 없습니다. 개발자의 경우 GetTrusage ()는 완전한 시스템 모니터링 도구보다 성능을 조정하는 데 도움이되는 도구와 비슷합니다. 실시간 및 포괄적 인 시스템 모니터링이 필요한 경우 상단HTOP가 의심 할 여지없이 더 적용됩니다.

그러나 PHP에서 프로세스 레벨 리소스 모니터링을 원한다면 GetTrusage ()는 특히 특정 중요한 작업을 수행 할 때 여전히 매우 유용한 도구입니다. 이는 개발자가 프로세스 성능 병목 현상을 실시간으로 얻고 분석 할 수 있습니다.

결론적으로

GetUsage ()는 특정 프로세스 리소스 사용량을 제공 할 수 있지만 Top 또는 HTOP 와 같은 시스템 수준 모니터링 도구를 완전히 대체 할 수는 없습니다. 요구 사항이 특정 PHP 스크립트의 성능을 모니터링 해야하는 경우 매우 효과적인 도구입니다. 그러나 포괄적이고 실시간 시스템 모니터링을 위해서는 TopHTOP가 여전히 더 적합한 선택입니다.