Bonjour,
Je souhaite développer une sorte de job scheduler très light aujourd'hui (une sorte de cron qui gèrerais les dépendances) et j'aimerais savoir d'après vous quelle serait la (ou les) meilleure(s) méthode(s) afin de gérer la détection et le démarrage des jobs par exemple (ceux n'ayant pas de condition d'entrée, mais simplement une date et une heure).
si je prend un exemple, mon scheduler a plusieurs jobs en base de données, programmés pour démarrer à tous types d'heures, jours, fréquences etc. par exemple des jobs tous les lundis à telle heure, certains plusieurs fois par jour toute la semaine etc.
mon problème est le suivant : je ne sais pas vraiment comment gérer :
1. la détection de tous ces jobs par rapport à la journée actuelle
2. le lancement de ces jobs par rapport à l'heure actuelle
j'imagine que j'ai deux solutions pour la détection :
1. faire une sorte de "montée au plan" (pour ceux qui connaissent Control-M par exemple), admettons à minuit, ou le service détecterait dans la base tous les jobs qui doivent tourner "ce jour" (sur les 24 heures à venir) grâce à des requêtes sur certains champs dans la base (normalement pas compliqué)
2. guetter la base en permanence
mais après la "détection", comment faire pour planifier le lancement de ces jobs à telle et telle heure ?
1. faut-il par exemple tout placer dans un tableau (mémoire), tableau préalablement préparé comportant les heures et minutes, et à chaque minute qui passe, regarder si des jobs sont enregistrés dans le tableau à ce moment là ? et les lancer ?
2. ou alors pour chaque job préparé, calculer le temps qu'il y a jusqu'à lancer ce job, et sleep en attendant ?
merci pour vos lumières ! si vous avez des tuyaux, idées etc.. je suis toute ouïe
ps : je n'ai spécifié aucun langage ni base de données, mais ça devrait normalement être fait en Perl et Oracle, avec une IHM en PHP ou CGI pour gérer le tout, à voir.
cordialement,
PS : j'ai un peu trouvé réponse à mes questions ici mais si vous avez d'autres idées je suis preneur (http://unix.stackexchange.com/questi...on-daemon-work)
Partager