PHP Cronjobs besser programmieren

Schumiel

Lieutenant
Registriert
Jan. 2010
Beiträge
835
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.
 
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.
 
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.
 
Ganz profan: Lass einen globalen Cronjob alle 30 Minuten laufen und übergebe die aktuelle Zeit via Bash an dein PHP Skript. Das kann dann entscheiden, was zu tun ist?
 
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.
 
@NullPointer, das ist eine sehr gute Idee. Und trotzdem kann der Cronjob alle 30 Minuten laufen oder? Serverzeit = Datenbankzeit = PHP-Zeit?
 
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.
 
Zurück
Oben