Cron
Scheduling côté serveur — exécute un callback à intervalle, à une heure du jour, ou sur une expression cron.
Scheduling côté serveur — exécute un callback à intervalle, à une heure du jour, ou sur une expression cron.
lib.cron planifie des tâches côté serveur. Chaque appel renvoie un CronJob que tu peux stop(). Côté serveur uniquement.
local job = lib.cron.every('5m', function()
cleanupExpired()
end)
job.stop() -- quand tu as finievery(interval, callback, onError?) — l'intervalle est un nombre + unité : s, m ou h (ex : '30s', '5m', '2h').
lib.cron.at('03:00', function()
nightlyReset()
end)at(timeStr, callback, onError?) — timeStr au format HH:MM (24h). Se déclenche chaque jour à cette heure.
-- chaque jour de semaine à 08:30
lib.cron.new('30 8 * * 1-5', function()
openShops()
end)new(expression, callback, onError?) — une expression cron standard à 5 champs minute heure jour mois jour-semaine :
| Champ | Plage | Extras |
|---|---|---|
| minute | 0–59 | |
| heure | 0–23 | |
| jour | 1–31 | L = dernier jour du mois |
| mois | 1–12 | noms jan–dec |
| jour-semaine | 0–7 | noms sun–sat (0 et 7 = dimanche) |
L = dernier jour du moisjan–decsun–sat (0 et 7 = dimanche)Chaque champ accepte *, des listes (1,3,5), des plages (1-5) et des pas (*/15). Résolution : une minute.
Chaque planificateur renvoie un CronJob :
job.stop() — annule la tâche.job.isActive() → boolean — si elle tourne encore.Un 3ᵉ argument onError(message) est appelé si ton callback lève une erreur — la tâche continue.
Côté serveur uniquement. Un intervalle / heure / expression invalide logge une erreur et renvoie une tâche no-op (qui ne se déclenche jamais) au lieu de planter. new vérifie une fois par minute : pas de précision infra-minute — utilise every pour ça.