phpbar.de logo

Mailinglisten-Archive

[php] die Abarbeitung eines Zeitplanes realisieren

[php] die Abarbeitung eines Zeitplanes realisieren

St6v6 at web.de St6v6 at web.de
Die Feb 22 16:26:30 CET 2005


Es gibt eine Datei "job_handler.php" die einen Zeitplan (jobs.txt) abarbeiten soll.

Sie nimmt sich also immer den nächsten Job.
Berechnet dann, wie viel Zeit bis dahin noch ist und wartet dann mit sleep().

Sagen wir, es sind noch 11Minuten Zeit:

// warten ..
$end = time() + 660;
while (time() < $end)
  sleep(1);

(Ich prüfe jede Sekunde, weil sleep(660) leider nicht genau 11 Minuten warte(?),
die Jobs aber sekundengenau abgearbeitet werden müssen)

Nun kommt es aber vor, dass in den 10Minuten ein neuer Job zur "jobs.txt" hinzugefügt wird und eher abgearbeitet werden muss.
Und da ist das Problem!
Ich muss der "job_handler.php" sagen, dass sie einen anderen Job erledigen soll.

Im Moment hab ich es so, dass max. 5 Minuten gewartet wird.
D.h. wenn der nächste Job noch mehr als 5Minuten Zeit hat, dann wird einfach 5Minuten gewartet.
Das passiert so lange, bis einer weniger als 5Minuten entfernt ist
und in dem Fall wird dann exakt bis zum nächsten Job gewartet.

Damit hab ich nun kein Problem mehr, wenn ich nur Jobs hinzufüge, die noch min. 5Minuten Zeit haben.

Ich finde, das ist aber nicht die beste Lösung.
Denn es muss alle 5Minuten nach dem nächsten Job geschaut werden und ein neuer Job muss noch min. 5Min. Zeit haben.

??? Habt ihr eine Idee, wie ich die Abarbeitung anders realisieren kann ???
(sie sollte möglichste sekundengenau und ressourcensparend sein)

PS: Wißt ihr, wieso sleep(x) nicht genau x Sekunden wartet.
Habs mit 10Minuten getestet und nebenbei meine Windowsuhr immer nach der Atomuhr im Netz aktualsiert.
Die blöde Windowsuhr läuft nämlich auch recht schnell anders als die Atomuhr aus dem Netz. :(
______________________________________________________________
Verschicken Sie romantische, coole und witzige Bilder per SMS!
Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193


php::bar PHP Wiki   -   Listenarchive