Drupal 7 und die Cron-Jobs
am 12.07.2014 - 23:27 Uhr in
nur das ich es richtig verstanden habe....
Wenn man z.B. eingestellt hat: Cron abarbeiten alle 3 Stunden, dann wird die cron.php (mit Schlüssel) nach frühestens 3 Stunden aufgerufen.
Der Auslöser für diesen Aufruf kann ein einfacher Besucher sein, der dann natürlich bei einer etwas längeren Dauer des Cron-Jobs eben Pech gehabt hat, und auf die Seite warten muß.
Kommt erst nach 4 Stunden ein Besucher, wird der Cron-Job eben erst nach 4 Stunden aufgerufen.
Wenn man die cron.php (mit Schlüssel) vom Server über eine Cron-Tabelle z.B. jede Stunde aufruft, dann wird cron.php aber nur alle 3 Stunden abgearbeitet, die ersten zwei Aufrufe laufen eben ins Leere.
Zumindest hat man damit sichergestellt, daß nicht ein Besucher, der den Cron auslöst, warten muß, weil er ja stündlich vom Server aufgerufen wird. Es ist aber sichergestellt, daß der Cron-Job auf jeden Fall alle 3 Stunden ausgeführt wird.
Welche Bedingungen erfüllt sein müssen, damit der Cron-Job überhaupt ausgeführt wird (veränderte Nodes, große Cache Tabelle, E-Mails die zu verschicken sind, Suchindex-Aktualisierung), sind nirgends ausführlich beschrieben oder ? (Die angesprochenen Dinge in der Klammer, habe ich mir nur ausgedacht.)
Gruß
Berthold Lausch
- Anmelden oder Registrieren um Kommentare zu schreiben

Wenn Du einstellst, dass Cron
am 13.07.2014 - 10:24 Uhr
Wenn Du einstellst, dass Cron alle 3 Stunden laufen soll (bei drupal), dann wird der Cronjob alle 3 Stunden durch Drupal ausgelöst, sobald ein Nutzer die Seite aufruft (also alles so, wie Du es beschrieben hast, entsprechend wird der Cron erst ausgeführt nach 4 Stunden, wenn so lange kein benutzer auf die Seite zugreift). Stellst du serverseitig einen Cronjob ein, dann wird der ZUSÄTZLICH ausgelöst. Du hast dann praktisch 2 parallele Cron-Pläne, der vom Server und der von Drupal. Wenn Du den Cronjob vom Server auslösen lässt, schalte den Cron-Job in den Drupal-Einstellungen lieber aus.
Es gibt keine "Bedingungen" für die Auslösung des Cronjobs. Der ist dafür gedacht, regelmäßige Aufgaben abzuarbeiten. Die einzelnen Aufgaben können durch Bedingungen beschränkt werden, aber das wird erst beim Cron geprüft, nicht vorher.
tobi-berlin schrieb Stellst
am 13.07.2014 - 12:21 Uhr
Stellst du serverseitig einen Cronjob ein, dann wird der ZUSÄTZLICH ausgelöst. Du hast dann praktisch 2 parallele Cron-Pläne, der vom Server und der von Drupal. Wenn Du den Cronjob vom Server auslösen lässt, schalte den Cron-Job in den Drupal-Einstellungen lieber aus.
Danke für die Klarstellung an dieser Stelle. Der Vollständigkeit möchte ich noch erwähnen, daß ein Cron-Job von außerhalb (cron.php), nicht ausgeführt wird, wenn sich die Seite im Wartungsmodus befindet.