NEWS
komme mit schedule nicht klar...
-
Moin!
Eigentlich sollte es doch ganz einfach sein...
Ich möchte per schedule eine Aktion einmalig auslösen. Mit dem CRON-Rechner komme ich zu dem oberen Ergebnis, das bei mir aber nicht funktioniert.
Der untere Aufruf funktioniert, aber würde sich ja jeden Tag (bzw. je nach Angaben jährlich) wiederholen. Und das Jahr kann ich ja wohl nicht angeben.
Was passiert eigentlich mit schedule-Einträgen, die mit "once" eingerichtet wurden und ausgelöst wurden? Werden die automatisch gelöscht, weil sie ja nicht mehr ausgelöst werden können?schedule('{"time":{"exactTime":true,"start":"21:27"},"period":{"once":"02.05.2020"}}', function () {log('Schedule 1 funktioniert');}); schedule('5 27 21 * * *', function () {log('Schedule 2 funktioniert');}); // 5 Sekunden später, um Probleme durch Gleichzeitigkeit auszuschließen
ergibt:
21:25:57.287 info javascript.0 (11000) Start javascript script.js.Versuche.AnwSimTest
21:25:57.289 info javascript.0 (11000) script.js.Versuche.AnwSimTest: registered 0 subscriptions and 1 schedule
21:27:05.006 info javascript.0 (11000) script.js.Versuche.AnwSimTest: Schedule 2 funktioniert -
offenbar gibt es doch einen year-Parameter:
schedule({hour:21,minute:56,date:2,month:4,year:2020} , function () {log('Schedule 3 funktioniert');}); // Monat -1!
funktioniert bei mir. Bleibt nur noch die Frage von oben: wird von der internen schedule-Verwaltung erkannt, dass der Termin nur einmal dran kommt und er deshalb gelöscht werden kann?
Wenn nicht, würde ich mir ja die schedule-Tabelle komplett zumüllen, wenn ich jeden Tag einige zig Termine einstelle... -
Kannst du uns kurz mal deine Beweggründe mitteilen. Mir fällt da jetzt nichts ein was ich mit einmal schedule ausführen sollte.
-
@JohGre klar doch.
Das Stichwort ist Anwesenheitssimulation. Irgendwann tagsüber wird für den folgenden Abend eine Abfolge von Zeitpunkten erstellt, zu denen bestimmte Beleuchtung geschaltet wird. Am nächsten Tag muss das natürlich anders aussehen.
Ok, wenn es in einem Jahr der gleiche Ablauf ist, wird das niemand merken...
Was ich eigentlich wollte, klappt jetzt ja schon. Bleibt nur noch die Frage, ob ich damit das schedule-System intern zumülle und überfordere. -
@ELK Moin,
ich stand vor der gleichen Herausforderung:
Ich lasse mir im Script Einmalausführungstermine errechen und erstelle dann einen schedule.
Beispiel:
var scheduleEin = schedule(Minuten + " " + Stunde + " * * *", Funktion);
Mit clearschedule(scheduleEin) lösche ich den schedule wieder (letzte Zeile der aufgerufenen Funktion).