sql >> Databasteknik >  >> RDS >> Mysql

Hur schemalägger man dynamisk funktion med cron-jobb?

Cron-uppgifter kräver att du förinställer de tider då de körs, de kan inte (ja du kan hacka detta genom att ha ett skript som redigerar din crontab, men jag skulle inte säga att det är en bra idé) få sin tid att köras dynamiskt avgjort. Det betyder att du i princip har två alternativ:

1) Ställ in ett cronjob så att det körs varje minut och använd en temporär fil som du trycker på för att tala om förra gången den körde en av de schemalagda uppgifterna Varje gång den körs kontrollerar den om det fanns en uppgift att köra mellan den senaste tidsstämpeln av din temporära fil och aktuell tid, och om det finns kör den uppgiften. Detta är en grov men enkel lösning.

2) Använd inte cron. Skapa en demon som kontrollerar vilka tider uppgifter behöver köras och placerar dem i en prioriterad kö, sedan öppnar den det tidigaste elementet och sover tills det är dags att köra den uppgiften. Den kör uppgiften och sätter in den igen för att köras 24 timmar i framtiden och upprepas. Denna lösning är mycket mer elegant, men den kräver också mer arbete.



  1. Noll Data Loss Recovery Appliance

  2. Kontrollera om ett objekt inte finns i en annan tabell

  3. Problem med att lägga till främmande nyckel med Alter Table med befintlig MYSQL-databas - kan inte lägga till den! Hjälp!

  4. Exekveringssekvens för Group By, Have and Where-klausul i SQL Server?