Vor einiger Zeit hatte ich ja schonmal hier im Blog über dieses kleine Projekt berichtet. tdCron ist eine Klasse für PHP 5 mit der man berechnen kann wann ein bestimmter Cronjob laufen muss.
Was sie von diversen anderen Klassen abhebt ist die Fähigkeit sowohl den jeweils vorherigen oder nächsten Termin relativ zu einem beliebigen Zeitpunkt zu berechnen. Man muss dazu lediglich die Definition des Cronjobs und den Referenzzeitpunkt an die entsprechende Funktion übergeben.
Angenommen wir haben einen Cronjob bei dem der Zeitpunkt so definiert ist:
20,30 1 * * 1-5
(( was für "Montags-Freitags um 1:30 und 2:30" steht )) und wir wollen nun berechnen wann dieser Cronjob relativ zum 1. Januar 2011 hätte laufen sollen, dann könnte man das wie folgt machen:
// nächster Lauf
$next = tdCron::getNextOccurrence('10,30,50 10-15 * * *',strtotime('1 January 2011 12:00:00'));
// vorheriger Lauf
$next = tdCron::getLastOccurrence('10,30,50 10-15 * * *',strtotime('1 January 2011 12:00:00'));Die aktuelle Version der Klasse sollte fast immer die richtigen Werte zurückliefern. Das "fast" im letzten Satz resultiert aus zwei kleinen "Problemen" die der Code hat:
- Daten vor 1901 und nach 2038 bereiten Probleme (was an der Verwendung von Unix-Timestamps liegt)
- Die Funktionen suchen nur in einem Bereich von 10 Jahren vor/nach der Referenzzeit. Bestimmte Zeitangaben (soweit ich bisher feststellen konnte: 29. Februar in Kombination mit einem bestimmten Wochentag) können dazu führen, dass in diesem Zeitraum kein Datum gefunden wird, was zu einer Exception führt
Beides sind Probleme die man im Prinzip lösen könnte indem man den Code entsprechend anpasst. Allerdings sollten diese beiden Probleme quasi nie (bzw. erst in knapp einem viertel Jahrhundert
) auftauchen weil sie sehr speziell sind. Ich persönlich sehe im Moment daher keinen unmittelbaren Handlungsbedarf sie zu beheben.



Letzte Kommentare