homtata hat geschrieben:Hallo Gemeinde,
Hallo erstmal
für mein aktuelles Projekt stehen mir serverseitig beim Provider keine Cronjobs zur Verfügung.
Das ist schon mal schlecht, wenn man Cronjobs braucht.
Daher habe ich jetzt einen Cronjob in Contenido eingerichtet
Wie soll der funktionieren, wenn es serverseitig keine Cronjobs gibt?
- im Prinzip soll morgens zu einer bestimmen Uhrzeit
Das ist die ureigenste Aufgabe eines Cronjobs.
Daher der Name Cron.
Der Cronjob ist programmiert, eingerichtet und funktioniert auch, wenn ich ihn händisch auslöse.
Das ist dann kein echter Cronjob, sondern so eine Art Pseudocron.
Nur funktioniert die Zeitsteuerung überhaupt gar nicht...
Natürlich nicht, weil es gibt ja keinen Cronjob
Aktuell will ich, dass der Cronjob morgens um 6 Uhr ausgeführt wird,
Also du brauchst einen echten Cronjob.
Hast den aber nicht.
Daraus folgt?
Das funktioniert nicht.
... weil vielleicht kein Cronjob zur Verfügung steht.
Gestern ging es mal, den Cronjob alle 5 Minuten ausführen zu lassen:
Zufall.
Hab ich ein Verständnisproblem mit diesen PseudoCrons?
Wahrscheinlich.
Diese Art Crons gibt es auch bei Wordpress (Newsletter Plugin) und anderen. Das sind keine echten Cronjobs.
Sie werden angestoßen, wenn jemand die Seite aufruft, weil nur dann der Programmcode der Seite auf dem Server läuft und nur dann auch ein solcher Pseudocron abgearbeitet werden kann.
Sollte also jemand alle 5 Minuten oder öfter die Seite bedienen, dann wird auch ein Cron alle 5 Minuten bedienbar gemacht.
Wie werden die ausgelöst? Ich habe damit nicht wirklich Erfahrung....
Eben, indem die Seite aufgerufen wird, läuft der Seitencode und kann den eigenen Cron bedienen.
Pseudo halt.
Wer echte Cronjobs braucht, sollte echte Cronjobs beim Hoster bestellen.
Es gibt noch eine andere Variante an Pseudocronjobs, die per Batch gestartet werden und sich selbst immer wieder aufrufen.
Das habe ich früher mal programmiert.
starten:
das programm das mit Parametern gestartet wird:
der Check im Cronprogramm selbst:
Code: Alles auswählen
$count = (int)exec("ps aux | grep 'cron.php $param1 $param2 $param3' | grep -v grep | wc");
if ($count>1) //wenn mehr als einmal cron.php läuft ...
{
exit();
}
Die Dinger prüfen sich selbst, ob sie einmal oder mehrmals gestartet wurden und "löschen" sich selbst, wenn es mehr als eine laufende Instanz gibt.
Das mit der Zeit ist dann so eine Sache, die man selbst einprogrammieren muss.
Da das Programm ständig 24/7 läuft, müsste man dann also die Uhrzeit checken, alle Minute in dem Fall.
Erst wenn es genau 6 Uhr ist (Zeitzone beachten!), startet dieser Pseudocron das, was es ausführen soll.
Der Haken an der Sache:
Man braucht dazu die Möglichkeit, überhaupt so ein Batch zu starten und etwas in die Prozessliste eintragen zu lassen.
Geht eigentlich fast nur bei root Servern...
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.