만족

[PHP] CPU/메모리/디스크 사용량 로드하기 본문

[PHP] CPU/메모리/디스크 사용량 로드하기

Backend/PHP Satisfaction 2021. 4. 25. 00:47

CPU 사용량 

function get_server_cpu_usage() {

    $load = sys_getloadavg();
    return $load[0];
}

sys_getloadavg()는 길이가 3인 배열을 리턴하며,

각각 1분, 5분, 15분 평균 CPU 사용률을 의미한다.

 

배열의 0번 인덱스는 1분 평균 CPU 사용률을 의미한다.

 

이 값은 0~1사이의 값을 리턴하므로, 백분율로 표현하려면 $load[0]*100을 리턴한다.

 

메모리 사용량

function get_server_memory_usage() {

    $free         = shell_exec('free');
    $free         = (string) trim($free);
    $free_arr     = explode("\n", $free);
    $mem          = explode(" ", $free_arr[1]);
    $mem          = array_filter($mem);
    $mem          = array_merge($mem);
    $memory_usage = $mem[2] / $mem[1] * 100;

    $report['total']         = $mem[1];
    $report['used']          = $mem[2];
    $report['usage_percent'] = $memory_usage;

    return $report;
}

메모리 사용량은 php 자체적으로 지원하는 함수가 없어서,

shell에서 실행한 커맨드의 결과값을 문자열로 받아 처리한다.

 

우분투에서는 free 명령어를 사용하면 다음과 같은 문자열이 나온다.

 

여기서 total, used를 알면 free도 구할 수 있고 usage rate 도 구할 수 있으므로

 

해당 문자열을 '\n'과 '공백'으로 잘라 배열로 만들어, Mem total/used값을 가져온다.

 

디스크 사용량

function get_server_storage_usage() {
    $ds                    = disk_total_space("/");
    $df                    = disk_free_space("/");
    $disk['free']          = $df;
    $disk['use']           = $ds - $df;
    $disk['entire']        = $ds;
    $disk['usage_percent'] = $df / $ds * 100;
    return $disk;
}

우분투에서는 "/"를 전달해 루트 경로에서 총량(disk_total_space), 미사용량(disk_free_space)을 구한다.

 

윈도우에서는 C:\처럼 전달한다.

 

실행결과

이제 관리자 페이지 대시보드에서 간략히 확인할 수 있다

 

 



Comments