내 PHP 스크립트가 서버가 바쁜지 어떻게 알 수 있습니까?
문제
CPU 및 MySQL 리소스를 많이 사용하는 청소를하는 Cron 작업을 실행하고 싶습니다. 서버가 비교적 바쁘지 않은 경우에만 실행되기를 원합니다.
PHP에서 결정하는 가장 간단한 방법은 무엇입니까? (예를 들어, 마지막 순간에 몇 개의 쿼리 수를 반환하는 쿼리가 있습니까? ...)
해결책
if (function_exists('sys_getloadavg')) {
$load = sys_getloadavg();
if ($load[0] > 80) {
header('HTTP/1.1 503 Too busy, try again later');
die('Server too busy. Please try again later.');
}
}
이 기능을 필요에 맞게 업데이트하십시오
다른 팁
Linux에서는로드 할 수 있습니다 /proc/loadavg
파일.
$load = split(' ',file_get_contents('/proc/loadavg'))
$loadAvg = $load[0]
이것이 유닉스 시스템 인 경우 uptime
. 이것은 일반적으로 "바쁜"의 좋은 척도로 간주되는 CPU 하중을 보여줍니다. 근처 또는 그 이상 1.0
"완전히 바쁘다"는 것을 의미합니다.
해당 출력에는 3 개의 CPU "로드"시간이 있으며 부하 평균 1, 5 및 15 분 이상을 제공합니다. 스크립트에 적합한 것을 선택하십시오. "로드"의 정의 여기에.
아마도 정보를 사용할 수 있습니다 MySQL 목록 프로세스 DB의 부하에 대한 괜찮은 지표 인 Active vs. Sleep가 얼마나 많은지 확인하는 기능.
Linux에 있다면 사용할 수 있습니다 sys getloadavg 기능 전체 시스템로드를 볼 수 있습니다.
제휴하지 않습니다 StackOverflow