Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment planifier une fonction dynamique avec cron job ?

Les tâches cron vous obligent à prédéfinir les heures auxquelles elles s'exécutent, elles ne peuvent pas (oui, vous pouvez pirater cela en ayant un script qui édite votre crontab, mais je ne dirais pas que c'est une très bonne idée) voir leur temps d'exécution décidé dynamiquement. Cela signifie que vous avez essentiellement deux options :

1) Définissez un cronjob pour qu'il s'exécute toutes les minutes et utilisez un fichier temporaire que vous touchez pour indiquer la dernière fois qu'il a exécuté l'une des tâches planifiées Chaque fois qu'il s'exécute, il vérifie s'il y avait une tâche à exécuter entre le dernier horodatage de votre fichier temporaire et l'heure actuelle, et s'il existe, il exécute la tâche. C'est une solution grossière mais simple.

2) N'utilisez pas cron. Créez un démon qui vérifie à quelle heure les tâches doivent être exécutées et les place dans une file d'attente prioritaire, puis il fait apparaître le premier élément et dort jusqu'à ce qu'il soit temps d'exécuter cette tâche. Il exécute la tâche et la réinsère pour qu'elle soit exécutée 24 heures plus tard et se répète. Cette solution est de loin plus élégante, mais elle demande aussi plus de travail.