NEWS
[Gelöst] JS-Skript - Schedule funktioniert nicht (mehr)
-
Ich habe ein kleines Skript (hier auf das wesentliche reduziert), dass in einem festen Zyklus aufgerufen werden soll (hier jede Minute)
function Heizung () { const THIS_SCRIPT = "TEST-SKRIPT - "; log (THIS_SCRIPT + "------------ CHECK SCHEDULE ------------", "info"); } schedule("0/1 * * * *", Heizung);Wie ich festgestellt habe, klappt es mit dem "schedule" leider überhaupt.
Statt des Starts jede Minute läuft das Skript nur jede Stunde.
Das Skript selbst läuft schon seit langem und ist einstmals auch korrekt getriggert worden. Allerdings habe ich dieses Fehlverhalten erst jetzt zufällig über die Log-Einträge festgestellt: zur Zeit ist die Heizng nicht ganz so wichtig für das Wohlbefinden.
Was könnte sich geändert haben?
Mein System:
Admin 3.5.0
JS 3.6.4
Dieses Skript läuft in einer eigenen JS-Instanz (der zweiten)
-
Ich würde
schedule("* * * * *", Heizung);wegen der Lesbarkeit bevorzugen
Noch zur kurzen Erläuterung:
Der Schrägstrich kann ein mathematischen geteilt sein:
9/3 * * * * ````wäre mit```` 3 * * * * ````identisch. 0/1 sollte Null ergeben. Daher wird Dein Skript immer zur 0\. Minute ausgeführt. Der Schrägstrich kann aber auch als Intervallangabe verwendet werden:*/5 * * * *
bedeutet das das Skript alle 5 Minuten ausgeführt wird. Entsprechend wird bei
*/1 * * * *
das Skript jede Minute ausgeführt. Daher kann man auch gleich
-
Ich muss zugeben, dass das Intervall 1 Minute leider etwas ungeschickt war. Da kam das Probölem selbst nicht klar genug heraus.
Der Schrägstrich kann ein mathematischen geteilt sein:
9/3 * * * *wäre mit
3 * * * *identisch. `
Das ist so nicht korrekt.
Die genaue Definition des Intervall bedeutet hier:
Start zur Minute 9 und dann alle drei Minuten. Dies wird auch im Skript so angegeben: einfach mal oben CRON antippen und dann den Ausdruck eingeben. Damit würde zur Minute 3 und 6 kein Trigger kommen.
Die echte CRON-Syntax ist jedoch in diesem Fall etwas anders https://de.wikipedia.org/wiki/Cron#Beispiele
Danach muss es
1-59/2 * * * * ````heißen. Also zwischen Minute 1 und 59 triggere alle 2 Minuten. Und siehe da: der JS-Adapter macht es nun genau richtig. Fazit: Die im JS-Adapter vorgeschlagene Syntax ist (teilweise) leider falsch. -
Nachtrag:
Ich habe gerade festgestellt, dass die CRON-Einstellungen der Adapter auf der Instanzen-Seite zum gleichen Verhalten führen.
Dort fiel es mir bislang nicht auf, da die betroffenen Adapter bei mir nur der Anzeige dienen und ich sie natürlich nicht dauernd überwacht habe.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden