27-04-2010, 06:30 PM
Tu lance le cron toutes les heures.
Ta tâche va lire une table task_ranges qui dispose de 2 colonnes de type datetime : l'heure de début du cycle et celle de fin. Tu as aussi un booléen qui indique si la tâche a été réalisée pour cette période.
Ainsi quand ton script s'exécute, tu cherches la task_range dans laquelle tu es à cet instant (et la crée si elle n'existe pas et que la période précédente est passée) puis tu lance un random entre 1 et le nombre d'heures couvertes par ta période. Si le nombre obtenu est 1 (fixé arbitrairement), tu exécutes ta tache, tu mets ton booléen à true.
Il faut aussi forcer l'exécution de la tâche s'il n'y aura plus d'appel au script pour la période trouvée.
Ainsi, ton script ne sera évalué qu'une fois dans ta période.
Sephi-Chan
Ta tâche va lire une table task_ranges qui dispose de 2 colonnes de type datetime : l'heure de début du cycle et celle de fin. Tu as aussi un booléen qui indique si la tâche a été réalisée pour cette période.
Ainsi quand ton script s'exécute, tu cherches la task_range dans laquelle tu es à cet instant (et la crée si elle n'existe pas et que la période précédente est passée) puis tu lance un random entre 1 et le nombre d'heures couvertes par ta période. Si le nombre obtenu est 1 (fixé arbitrairement), tu exécutes ta tache, tu mets ton booléen à true.
Il faut aussi forcer l'exécution de la tâche s'il n'y aura plus d'appel au script pour la période trouvée.
Ainsi, ton script ne sera évalué qu'une fois dans ta période.
Sephi-Chan