Agendando tarefas Cron sem colidir frequências

0

Se eu tiver vários trabalhos agendados:

  1. a cada minuto
  2. A cada 5 minutos
  3. A cada 15 minutos
  4. a cada hora
  5. À meia-noite

Então, exatamente às 00:00, tenho 5 trabalhos sendo executados ao mesmo tempo.

Eu quero adicionar outro trabalho, que eu simplesmente preciso executar "uma vez por dia" - independentemente de quando! Na verdade, quero que o "quando" seja durante o menor tempo de carregamento do servidor.

Como posso fazer isso?

    
por Mikhail 26.10.2011 / 22:07

1 resposta

0

Uma maneira de fazer isso é:

  1. chame o roteiro pretendido uma vez por hora.
  2. Na primeira execução do script, verifique um arquivo temporário chamado .runTime .
  3. Se tal arquivo existir
    1. Analise e obtenha o formato de 24 horas a partir dele.
    2. Se a hora atual for igual ao tempo analisado
      1. Exclua o arquivo .runTime e execute o script pretendido
    3. Se for uma hora diferente - anule a execução
  4. Se não houver tal arquivo e a hora for 0 (meia-noite)
    1. calcular uma hora aleatória entre 0 e 23 e gravá-la no arquivo
por 31.10.2011 / 18:46

Tags