PHP Cronjob nacheinander ausführen - Wie registrieren, wenn fertig?

FrazeColder

Lt. Commander
Registriert
Okt. 2013
Beiträge
1.721
Moin zusammen,

ich möchte gerne eine Reihe von Cronjobs automatisch starten lassen, bzw. bündeln in einem Skript. Da ich nun leider nicht einfach den Source Code von allen 7 unterschiedlichen Cronjobs kopieren kann und in ein Skript einfügen kann, wollte ich mir ein PHP Skript schreiben, welches jeden einzelnen Cronjob nacheinander anstoßt.

Das ist soweit ja erstmal nicht schwierig. Schwierig wird es jetzt, da ich erkennen muss, wenn mein angestoßener Cronjob fertig ist. Denn das ganze muss in einer gewissen Reihenfolge von sich laufen und dabei darf jeweils der nächste immer erst angestupst werden, wenn der vorige Cronjob fertig ist.

Nur sind 5 Cronjobs auf meiner Webseite in einem WordPress Plugin und die 2 anderen bei meinem Hoster im Backend. Was ich mich jetzt frage ist, wie erkenne ich als erstes, wann ein Cronjob fertig ist, und zweitens, wie ich überhaupt andere Cronjobs anstupsen kann...

MfG und Vielen Dank für die Hilfe!
 
Da nimmt man kein php, sondern schreibt ein normales Shellskript. Einfach jedes der einzelnen Skripte in seine eigene Zeile, fertig. So wie auch z.B. eine Batchdatei.
 
Und die startet den einen erst, wenn der andere fertig ist?

Ich kann leider nur ein PHP Skript ausführen, eine URL aufrufen oder einen "Befehl" ausführen.
 
HominiLupus schrieb:
Da nimmt man kein php, sondern schreibt ein normales Shellskript. Einfach jedes der einzelnen Skripte in seine eigene Zeile, fertig. So wie auch z.B. eine Batchdatei.
Und wenn's mal ein bisschen länger dauert, fängt er mit dem ersten Prozess wieder an, bevor der letzte fertig ist.
 
fuyuhasugu schrieb:
Und wenn's mal ein bisschen länger dauert, fängt er mit dem ersten Prozess wieder an, bevor der letzte fertig ist.

Das Problem hätte man auch mit einzelnen Cronjobs.
Ein Shellskript ist ein "Befehl".
 
kommt wohl auf die natur der einzelnen jobs an. idealerweise blockieren die aufrufe, dann kannst du einen einzelnen cronjob anlegen, der durch ";" oder "&&" getrennt alle befehle hintereinander ausfuehrt. wenn die aufrufe nicht blockieren, dann wirst du die einzelnen jobs irgendwie so abaendern muessen, dass sie signalisieren, wenn sie fertig sind.
 
Erstmal verstehe ich nicht was du mit "Cronjob anstupsen" meinst. Entweder er ist eingetragen, und startet dann zur eingetragenen Zeit, oder eben nicht. Anstupsen muss man da gar nichts.

Weiterhin ist die Frage doch wie zeitkritisch das ganze ist. Wenn nur die Reihenfolge wichtig ist, aber die Zeit völlig egal, dann kannst du die doch einfach staffeln. Keine Ahnung was du da machst, aber länger als ein paar Minuten wird doch sicher keiner davon dauern.

Ansonsten müssen die einzelnen scripte doch sicher irgendwas machen, was sich dann natürlich auch irgendwie nachprüfen lässt. Dann kannst du eine while loop machen, mit sleep(2) oder so, die wartet bis das aktuelle Kriterium erfüllt ist, und dann das nächste script starten. Im Zweifelsfall fügst du halt noch eine DB oder Datei I/O zu den jeweiligen scripts hinzu, z.B. einfach ne Zahl in eine Datei schreiben.

Edit: Und was ein cronjob aufruft, kannst du idr. auch aus php aufrufen.
 
Zuletzt bearbeitet:
HominiLupus schrieb:
Das Problem hätte man auch mit einzelnen Cronjobs.
Was das potentielle Problem mit dem Vorschlag, alles in ein Shellskript zu packen, nicht löst. Vielleicht ist das aber gar kein Problem für die Anforderungen des TE, weshalb mein Post nur ein ergänzender Hinweis zu Deinem war.
 

Ähnliche Themen

Zurück
Oben