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? ...)

Foi útil?

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 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top