2015. 1. 20. 15:03

이번엔 서버의 CPU사용 정보를 가져오는 방법을 알아보겠습니다.

CPU사용 정보를 가져오는 함수는 sys_getloadavg()입니다.

이 함수의 설명을 보시면 반환값은 배열로 반환됩니다.

 

그런데 이 함수를 사용할때 주의 사항이 있습니다.

바로 윈도우 플랫폼에서는 동작을 하지 않는다는 것입니다.

(XAMPP로 작업을 하다 확인해보니 바로 에러를 표시합니다. ㅡㅡ;)

 

 

 

 

윈도우 플랫폼에서는 다른 방식을 사용해야 하는데

해당문서 하단에 아래에 어떤분이 소스를 올려놓으셨습니다.

"rick at rctonline dot nl"로 해당문서에서 검색하시면 찾기 쉬우실 것입니다.

아래는 그분이 올려주신 소스입니다.

(코드는 Syntax Highlighter가 적용되어 모바일에서는 안보일 수 있습니다.)

 

function get_server_load() {
 if (stristr(PHP_OS, 'win')) { //윈도우 플랫폼일때
   $wmi = new COM("Winmgmts://");
   $server = $wmi->execquery("SELECT LoadPercentage FROM Win32_Processor");
           
   $cpu_num = 0;
   $load_total = 0;
            
   foreach($server as $cpu){
    $cpu_num++;
    $load_total += $cpu->loadpercentage;
   }
            
   $load = round($load_total/$cpu_num);
            
 } else {
       
  $sys_load = sys_getloadavg();
  $load = $sys_load[0];
       
 }
        
 return (int) $load;
 
}

 

그런데 제가 설치된 XAMPP에서 테스트를 해보니

$wmi = new COM("Winmgmts://");

위 코드에서 오류가 발생하였습니다.

 

이는 COM class를 인식하지 못하기 때문인데

php.ini 파일에 다음을 추가하시면 됩니다.

extension=php_com_dotnet.dll

물론 윈도우 플랫폼 기준입니다. ^^

 

 

Posted by 작은0악마