만족
[PHP] CPU/메모리/디스크 사용량 로드하기 본문
[PHP] CPU/메모리/디스크 사용량 로드하기
Backend/PHP Satisfaction 2021. 4. 25. 00:47CPU 사용량
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:\처럼 전달한다.
실행결과
'Backend > PHP' 카테고리의 다른 글
[PHP] 아이피 정보 조회 및 해외 아이피 차단 (0) | 2022.01.13 |
---|---|
[PHP] 텔레그램 봇 API로 서버 주요 알림 받아보기 (0) | 2021.11.06 |
[PHP] Magic Quote는 정말 SQL Injection을 완벽 방어할까? (0) | 2020.10.26 |
[PHP] 즉시 실행 가능한 웹 코드 에디터 (0) | 2020.10.25 |
Comments