Como pode o meu script PHP dizer se o servidor está ocupado?
Pergunta
Eu quero executar um trabalho cron que faz limpeza que tem um monte de recursos da CPU e MySQL. Eu quero que ele seja executado somente se o servidor não é relativamente ocupado.
O que é a maneira mais simples para determinar que a partir de PHP? (Por exemplo, há uma consulta que retorna quantas consultas foram feitas no último minuto? ...)
Solução
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.');
}
}
Tente atualizar esta função para suas necessidades
Outras dicas
No Linux você pode obter carga de arquivo /proc/loadavg
.
$load = split(' ',file_get_contents('/proc/loadavg'))
$loadAvg = $load[0]
Se este é um sistema Unix, analisar a saída de uptime
. Isso mostra a carga da CPU, que é geralmente considerada como uma boa medida de "ocupado". Nada perto ou sobre meios 1.0
"completamente ocupado."
Há três CPU vezes "carga" em que a saída dando a média de carga com mais de 1, 5 e 15 minutos. Escolha qualquer faz sentido para o seu script. Definição de "carga" é aqui .
Você provavelmente pode usar a informação no Mysql Lista função para ver quantos são ativos dormir vs., um indicador decente sobre a carga sobre o DB.
Se você estiver no Linux você pode usar a função Sys GetLoadAvg para ver a carga total do sistema .