[php] Regelmäßige Termine Eintragen
#1
geschrieben 10. Oktober 2006 - 21:40
Ich bin gerade in einem Projekt, in dem eine bestimmte Aktion regelmäßig ausgeführt werden soll. Der Abstand ist aber von Aktion zu Aktion unterschiedlich:
Die eine nur werktags, die Andere nur Montags, Mitwochs und Donnerstags, die Andere nur am Wochenende und noch eine Montags, Dienstags und Freitags. Tage alle variabel, nur Beispiele.
So, wie code ich das in PHP nun vernünftig, sodass ich alle Aktionen flexibel gestalten kann? Das heisst, ich will möglichst unkompliziert die Rhytmen ändern können, temporär aussetzen können oder ganz löschen können.
Mir fällt einfach kein Konzept ein, das flexibel zu lösen, sodass ich nicht alle Termine für nen halbes Jahr o.ä. in eine Datenbank schreiben muss. Bitte helft mir mal über die Denkblockade hinweg...
Anzeige
#2
geschrieben 11. Oktober 2006 - 01:30
Schon ein Blick auf die date()-Funktionen von PHP geworfen? Damit kann man sehr flexibel alle möglichen Sachen nach Datum, Wochentage, Wochen-Nummer, usw. steuern.
if (date('l') == "Monday") {
// Tu was
}
if (date('W') % 2 == 0) {
// Tu was
}
Das erste Beispiel prüft ob Montag ist und führt ggfs die Befehle aus. Das kann man ja beliebig auf alle Wochentage ausbauen, bzw für unterschiedliche Wochentage verschiedene Aktionen ausführen.
Das zweite Beispiel prüft, ob die Wochenzahl gerade oder ungerade ist und führt dementsprechend Befehle aus. So kann man z.B. sagen, daß jede ungerade Woche (momentan haben wir Woche 41 von 52) ein Backup der DB gemacht werden soll.
Wie gesagt, die date() und time() Funktionen sind sehr mächtig und es gibt quasi nichts das man damit nicht machen kann, solange es sich um Datum/Zeit Aufgaben handelt.
Keine Ahnung was Du da alles vorhast, aber für solche Steuerungs-Scripts eignen sich Cronjobs am besten.
Dieser Beitrag wurde von asko bearbeitet: 11. Oktober 2006 - 01:31
#3
geschrieben 12. Oktober 2006 - 07:32
Jede Aktion kann in einem vom User definierten Intervall und Zeitpunkt ausgefürt werden. Das alles in einzelne if-Abfragen zu packen, da würde ich nächstes Jahr immer noch dran sitzen...
#4
geschrieben 12. Oktober 2006 - 18:48
Zitat (phillymarx: 12.10.2006, 06:32)
Doch ist es^^
Zitat
Dazu musst halt eine "Engine" schreiben die die Uhrzeiten und DB einträge auswerten kann^^
#5
geschrieben 12. Oktober 2006 - 18:51
Zitat
Dazu musst halt eine "Engine" schreiben die die Uhrzeiten und DB einträge auswerten kann^^
Soooo und nun sind wir auf einem Nenner
Denn genau dabei habe ich meine Probleme
#6
geschrieben 13. Oktober 2006 - 08:20
Nimm halt einfach die Zeit des Eintrags, etc. und wann er das nächste mal stattfinden soll?!
#7
geschrieben 13. Oktober 2006 - 10:35
Wir haben eine Tabelle:
eintragszeit | nächste_ausfuehrzeit
Es ist eingetragen, wann der Job gestartet wurde und wann er das nächste Mal läuft.
So. Der Job soll jeden Montag um 6.30 laufen, Dienstags um 7, Mittwochs aussetzen, Donnerstags wieder um 6.30, Freitags um 5 und Samstags sowie Sonntags erst um 9.
Ein anderer User möchte seine Aktionen Montags bis Donnerstags um 8.45, Freitag und Samstags gar nicht und Sonntags um 10.
Hardcoden in den Quellcode rein? Unmöglich. Schließlich gibt es noch einen dritten, einen vierten und einen fünften und vielleicht noch einen sechsten, einen siebten und einen achten, wohlmöglich sogar einen neunten, einen zehnten und ... User
Wie sorge ich dafür, dass nun die Aktionen regelmäßig nach diesen Vorgaben ausgeführt werden?
#8
geschrieben 13. Oktober 2006 - 12:31
Für jeden User würde ich halt eine eigenen Datensatz anlegen^^
#9
geschrieben 13. Oktober 2006 - 12:47
Dieser Beitrag wurde von Gitarremann bearbeitet: 13. Oktober 2006 - 12:51
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"

Hilfe
Neues Thema
Antworten
Nach oben



