PHP Cronjobs besser programmieren

Schumiel

Lieutenant
Dabei seit
Jan. 2010
Beiträge
650
Hallo zusammen,

und zwar ist der aktuelle Stand, dass ich jeden Monat 16 Auswertung via Cronjobs laufen lassen möchte. Dieser wird zur vollen Stunde oder halb benötigt. Da diese keinen festen Zeitrythmus haben, kann ich auf die bestehenden Zeitangaben von Cronjobs nicht zurückgreifen, wenn ich nur einen Cronjob mit einer Datei anlegen will.

Daher löse ich das bisher so, dass ich alle 30 Minuten das Cronjob durchlaufen lasse und addiere einen Datenbankeintrag mit 1. Ist die Zahl erreicht, wird der Cronjob ausgelöst. Alles gestrikt per PHP.

Meine Frage ist, ob ihr eine bessere Vorgehensweise habt?
Denn fällt der Server einmal zur halben oder vollen Stunde aus, ist wieder ein manuelles zu tun nötig.
 

Schumiel

Lieutenant
Ersteller dieses Themas
Dabei seit
Jan. 2010
Beiträge
650
Nein. Aber danke. :)

Hintergrund ist: Ich bin zu 1und1 gewechselt mit einem Managed Server. Dort habe ich nur noch 64 Cronjobs (zuvor ca. 300) zur Verfügung. Daher kann ich jede Auswertung keinen eigenen Cronjob mehr geben. Ich muss leider auch vom Monat her unterscheiden, ob dieser 28, 29,30 oder 31 Tage hat. So fallen sämtliche Auswertung etwas anders aus.
 

NullPointer

Lt. Commander
Dabei seit
Okt. 2009
Beiträge
1.570
Wäre es eine Möglichkeit, am Ende des Jobs zu berechnen, wann er das nächste Mal laufen soll, und diesen Zeitstempel in die Datenbank zu schreiben? Dann prüft das Skript regelmäßig, ob diese Zeit erreicht (oder überschritten) ist, und wenn ja, wird der Job ausgeführt.
 

DaZpoon

Lt. Commander
Dabei seit
Dez. 2009
Beiträge
2.045
Ich würde auch das Skript einfach fest triggern lassen und im Skript selbst entscheiden was zu tun ist. Dabei auch einfach den letzten Zeitstempel merken und im Falle eines Server-Ausfalls kann das Skript dann seine Aufgabe nachholen. Die Triggerrate musst du eben entsprechend klein wählen sodass deine Genauigkeitsanforderungen erfüllt werden.
 

Schumiel

Lieutenant
Ersteller dieses Themas
Dabei seit
Jan. 2010
Beiträge
650
@NullPointer, das ist eine sehr gute Idee. Und trotzdem kann der Cronjob alle 30 Minuten laufen oder? Serverzeit = Datenbankzeit = PHP-Zeit?
 

NullPointer

Lt. Commander
Dabei seit
Okt. 2009
Beiträge
1.570
Er kann so oft laufen, wie du möchtest - in den meisten Fällen tut er dann halt nichts :) Die PHP-Zeit sollte immer gleich der Zeit des Servers sein, auf dem das Skript läuft. Ob die Datenbankzeit die gleiche ist, hängt davon ab, auf welchem Server die DB läuft.
 
Top