Mit PHP und MySQL eine Zeitsteuerung ersetzen?

BartTheDevil89

Grünschnabel
Hallo,

ich möchte eine Art Zeitsteuerungssystem erstellen.
Ziel ist es, dass ich beispielsweise in einer DB festlegen kann, dass alle 2 Minuten etwas gemacht werden soll. Oder einmal am Tag um 1 Uhr nachts.
Meine Idee war folgende:

Eine Tabelle in der ein Timestamp gespeichert wird, wann der nächste Aufruf erfolgen muss. Und bei jedem Seitenaufruf wird dann überprüft, ob einer dieser Timestamps fällig ist. Wenn ja, dann soll er den entsprechenden Befehl durchführen und den neuen Timestamp durchführen.

Geht sowas? Bzw. das Problem ist ja wahrscheinlich vor allem das Erstellen des Timestamps.

Danke für die Hilfe
 
Cronjob, falls du einen Linux Webserver hast, handelt es sich um ein Windows System Taskmanager (empfehle ich aber nicht)
Suche dir lieber ein freeware cronjob-tool bekommst heute überall. Oder schreibst es selbst :D
 
Was soll den in der DB gemacht werden?
Du weißt PHP läuft nur am Server ab, ein integriertes Refresh mit Counter funktioniert da nicht, da es eine Endlosschleife gleich kommt!
 
Hi,

meine Idee hört sich zwar wie ein billiger hack an, könnte aber funktionieren;

Am Server wird das Arbeitsscript über den CLI aufgerufen und die Ausgaben (formatiert) umgepiped in eine Logdatei.
Dieses Script läuft somit von alleine (z.B. mit einer while(true)-Schleife) endlos, es gibt auch keine Timeout oder so, wie bei einer Webanfrage.
Die Ausgaben können dann von einem Statusscript ausgelesen und an den Browser geschickt werden. Da kannst du dann auch überlegen, ob du nicht noch AJAX o.ä. auch noch einbaust um Änderungen zu erkennen.

Soweit mal mein Vorschlag ;)

Gruß
BK
 
Was soll den in der DB gemacht werden?
Du weißt PHP läuft nur am Server ab, ein integriertes Refresh mit Counter funktioniert da nicht, da es eine Endlosschleife gleich kommt!

Hi....nein weder ein Counter noch sonst was. Aber wenn jetzt ein Seitenaufruf getätigt wird, durch Besucher, etc. wird in der DB überprüft, ob ein Cronjob gemacht werden muss oder nicht. Deswegen wollte ich ja die timestamps in der DB speichern, dass diese Abfrage ohne große Rechenkapazität gemacht werden kann.

Hi,

meine Idee hört sich zwar wie ein billiger hack an, könnte aber funktionieren;

Am Server wird das Arbeitsscript über den CLI aufgerufen und die Ausgaben (formatiert) umgepiped in eine Logdatei.
Dieses Script läuft somit von alleine (z.B. mit einer while(true)-Schleife) endlos, es gibt auch keine Timeout oder so, wie bei einer Webanfrage.
Die Ausgaben können dann von einem Statusscript ausgelesen und an den Browser geschickt werden. Da kannst du dann auch überlegen, ob du nicht noch AJAX o.ä. auch noch einbaust um Änderungen zu erkennen.

Soweit mal mein Vorschlag ;)

Gruß
BK

Oha...klingt ja ähnlich, dass du ne Art Script laufen lässt, was dann immer schaut. Aber das brauche ich ja garnicht. Es geht wirklich nur drum, wie oben beschrieben, dass ich die Timestamps für die Crons in einer DB speichern will und wenn ein Aufruf durch einen Besucher oder so entsteht, dass dann überprüft wird, ob einer fällig ist und wenn ja, dass der dann durchgeführt wird.
Das durchführen ist nicht das Problem. Das Problem ist mit php die Timestamps zu steuern und zu erstelllen.
 
Zum Verständnis, du hast in der Datenbank einen Timestamp?

PHP-Seite wird aufgerufen und es soll geprüft werden, ob der jetztige Timestamp größer ist als der Timestamp in der DB?

true = mach was und setzte einen neuen Timestamp in die DB?

false = mache nix.
 
Zum Verständnis, du hast in der Datenbank einen Timestamp?

PHP-Seite wird aufgerufen und es soll geprüft werden, ob der jetztige Timestamp größer ist als der Timestamp in der DB?

true = mach was und setzte einen neuen Timestamp in die DB?

false = mache nix.

Genau, fast....ich versuchs nochmal:

1. In einer DB sind mehere Timestamps gespeichert. (mehere, denn können ja auch mehrere Cronjobs eingetragen werden)

2. PHP-Seite wird aufgerufen und es soll geprüft werden, ob der jetztige Timestamp größer ist als einer der Timestamps in der DB.

true = mach was und setzte einen neuen Timestamp in die DB

false = mache nix.


So sollte es laufen.....der Punkt 2 mit dem überprüfen, ob was dran ist, ist kein Problem. Das Problem ist eher der Punkt 1 mit dem erstellen der Timestamps und am Ende auch wieder das Erstellen der Timestamps.
 

Neue Beiträge

Zurück