PHP에는 load average를 가져오는 sys_getloadavg() 함수가 있지만, Windows OS에서는 사용할 수 없다.
아래는http://php.net/sys-getloadavg 페이지의 댓글에서 가져온,
OS에 상관없이 load average를 가져오는 함수이다.
몇가지 방법이 있는데 COM 객체를 이용한 방법을 선택했다.
Windows OS에서 COM 객체를 이용한 방법은 반응이 느리므로 적절히 사용해야 함.
// 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";
'PHP' 카테고리의 다른 글
[PHP] 숫자 0, 문자/문자열 비교시 주의 (zero, character, string, type cast, equals) (4) | 2012.12.06 |
---|---|
[PHP] integer 최고값 (PHP_INT_MAX) (0) | 2012.11.22 |
[PHP] 날짜 일수 차이 계산 [date_diff(), DateTime, DateInterval] (0) | 2012.10.11 |
[PHP] 시그널 핸들러 사용하기 (signal handler, SIGTERM) (0) | 2012.09.11 |
[PHP] 지역변수, 클래스 멤버변수에 배열대입시 시간 (local variable, class member) (0) | 2012.09.07 |