PHP에는 load average를 가져오는 sys_getloadavg() 함수가 있지만, Windows OS에서는 사용할 수 없다.

 

아래는http://php.net/sys-getloadavg 페이지의 댓글에서 가져온, 

OS에 상관없이 load average를 가져오는 함수이다.

 

몇가지 방법이 있는데 COM 객체를 이용한 방법을 선택했다.

Windows OS에서 COM 객체를 이용한 방법은 반응이 느리므로 적절히 사용해야 함.

 

 

 

<?PHP

 

// OS에 상관없이 load average를 얻어올 수 있는 함수

function get_loadavg()

{

    // Windows

    // 느리므로 사용에 주의를 요함

    if (stripos(PHP_OS, 'win') !== false) {

        $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_avg = round($load_total / $cpu_num);

    }

    // Linux

    else {

        $sys_load = sys_getloadavg();

        $load_avg = $sys_load[0];

    }

 

 

    return (int)$load_avg;

}

 

echo "Load Average = ".get_loadavg()."\n";

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by bloodguy
,