Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie plane ich eine dynamische Funktion mit einem Cron-Job?

Cron-Tasks erfordern, dass Sie die Zeiten, zu denen sie ausgeführt werden, voreinstellen, sie können nicht (ja, Sie könnten dies hacken, indem Sie ein Skript haben, das Ihre Crontab bearbeitet, aber ich würde nicht sagen, dass das eine sehr gute Idee ist) ihre Ausführungszeit dynamisch entscheiden lassen. Das bedeutet, dass Sie im Wesentlichen zwei Möglichkeiten haben:

1) Stellen Sie einen Cronjob so ein, dass er jede Minute ausgeführt wird, und verwenden Sie eine temporäre Datei, die Sie berühren, um anzugeben, wann zuletzt eine der geplanten Aufgaben ausgeführt wurde. Bei jeder Ausführung wird überprüft, ob zwischen dem letzten Zeitstempel von eine Aufgabe ausgeführt werden sollte Ihre temporäre Datei und die aktuelle Uhrzeit, und falls vorhanden, führt sie die Aufgabe aus. Dies ist eine grobe, aber einfache Lösung.

2) Cron nicht verwenden. Erstellen Sie einen Daemon, der überprüft, zu welchen Zeiten Aufgaben ausgeführt werden müssen, und sie in eine Prioritätswarteschlange einreiht, dann das früheste Element ausgibt und schläft, bis es Zeit ist, diese Aufgabe auszuführen. Es führt die Aufgabe aus und fügt sie erneut ein, damit sie 24 Stunden in der Zukunft ausgeführt wird, und wiederholt sich. Diese Lösung ist wesentlich eleganter, erfordert aber auch mehr Arbeit.