Push-Scheduler: auf volle Minute synchronisiert
This commit is contained in:
@@ -82,7 +82,14 @@ async function sendPushoverMsg(userKey, appToken, message) {
|
|||||||
} catch(e) { console.error('Pushover Fehler:', e.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 {
|
try {
|
||||||
const now = db.prepare("SELECT datetime('now','localtime') as t").get().t;
|
const now = db.prepare("SELECT datetime('now','localtime') as t").get().t;
|
||||||
const due = db.prepare(`
|
const due = db.prepare(`
|
||||||
@@ -91,13 +98,12 @@ setInterval(async () => {
|
|||||||
JOIN pushover_settings p ON p.user_id = s.user_id
|
JOIN pushover_settings p ON p.user_id = s.user_id
|
||||||
WHERE s.sent = 0 AND s.scheduled_at <= ?
|
WHERE s.sent = 0 AND s.scheduled_at <= ?
|
||||||
`).all(now);
|
`).all(now);
|
||||||
|
|
||||||
for (const row of due) {
|
for (const row of due) {
|
||||||
await sendPushoverMsg(row.user_key, row.app_token, row.message);
|
await sendPushoverMsg(row.user_key, row.app_token, row.message);
|
||||||
db.prepare('UPDATE push_schedules SET sent=1 WHERE id=?').run(row.id);
|
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})`);
|
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); }
|
} 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`);
|
||||||
|
|||||||
Reference in New Issue
Block a user