From d475c8f64f0bad70d2c25bc5c2b513b72d73cd44 Mon Sep 17 00:00:00 2001 From: Dicken Date: Thu, 28 May 2026 19:31:11 +0200 Subject: [PATCH] Push-Scheduler: auf volle Minute synchronisiert --- backend/src/index.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/backend/src/index.js b/backend/src/index.js index 5f0153f..7e95aca 100644 --- a/backend/src/index.js +++ b/backend/src/index.js @@ -82,7 +82,14 @@ async function sendPushoverMsg(userKey, appToken, message) { } catch(e) { console.error('Pushover Fehler:', e.message); } } -setInterval(async () => { +// Beim Start auf die nächste volle Minute synchronisieren +const msToNextMinute = (60 - new Date().getSeconds()) * 1000 - new Date().getMilliseconds(); +setTimeout(() => { + runScheduler(); + setInterval(runScheduler, 60 * 1000); +}, msToNextMinute); + +async function runScheduler() { try { const now = db.prepare("SELECT datetime('now','localtime') as t").get().t; const due = db.prepare(` @@ -91,13 +98,12 @@ setInterval(async () => { JOIN pushover_settings p ON p.user_id = s.user_id WHERE s.sent = 0 AND s.scheduled_at <= ? `).all(now); - for (const row of due) { await sendPushoverMsg(row.user_key, row.app_token, row.message); db.prepare('UPDATE push_schedules SET sent=1 WHERE id=?').run(row.id); console.log(`✓ Push gesendet an user ${row.user_id}: "${row.message}" (fällig: ${row.scheduled_at})`); } } catch(e) { console.error('Push-Job Fehler:', e.message); } -}, 60 * 1000); +} -console.log('⏰ Push-Scheduler aktiv (jede Minute)'); +console.log(`⏰ Push-Scheduler aktiv – nächste Prüfung in ${Math.round(msToNextMinute/1000)}s`);