Wie kann ich verhindern, dass die Cron-Aufgaben von Site-Besuchern ausgelöst werden?

12

In den Protokollen meiner Website wird angezeigt, dass cron ausgelöst wird, wenn jemand die Website besucht. Dies verlangsamt die Ladezeit für den ersten Besuch.

Der Cron ist so konfiguriert, dass er alle 3 Stunden ausgeführt wird: Administration »Konfiguration» System »Cron .

Wie kann ich den Cron terminiert und nicht von Besuchern ausgelöst ausführen?

Katzenauge
quelle

Antworten:

9

Sie sollten zunächst die Drupal-Handbuchseiten über cron lesen , um Hintergrundinformationen und auszuführende Befehle zu erhalten.

  • Wenn Sie über Shell- / SSH-Zugriff auf den (Linux-) Server verfügen, können Sie run ausführen crontab -u www-data -e, um die Cron-Tabelle für den Webbenutzer zu bearbeiten. Sie sollten in der Lage sein, die Details im obigen Link zu verwenden, um die richtigen Cron-Läufe so oft einzurichten, wie Sie möchten.
  • Wenn Sie auf Shared Hosting ohne Shell-Zugriff zugreifen, müssen Sie sich über das Control Panel Ihres Webhosts (CPanel, Plesk usw.) anmelden und eine geplante Aufgabe hinzufügen. Dies stellt eine Webschnittstelle für die Cron-Registerkarten dar, sodass dieselben Einstellungen erforderlich sind.
  • Wenn diese nicht verfügbar sind, müssen Sie Ihr Hosting-Unternehmen um Hilfe bitten. Es gibt jedoch auch kostenlose und kostenpflichtige Dienste, die Sie nutzen können, wenn Sie die cron.phpSeite aus der Ferne anrufen . Siehe zum Beispiel Cron Job setzen .

Werfen Sie einen Blick auf das Elysia Cron-Modul, wenn Sie generell mehr aus cron herausholen möchten - es verfügt über eine gute Dokumentation und ermöglicht Ihnen die genaue Steuerung, welche Aufgaben wann ausgeführt werden.

Denken Sie schließlich daran, die Site zu deaktivieren, auf der sie ausgeführt wird, wenn Besucher zu Administration »Konfiguration» System »Cron gelangen, nachdem Sie dies eingerichtet haben.

Jim Kirkpatrick
quelle
Ich habe Shell-Zugriff. Ich kann cron Jobs gründen. Also werde ich es herausfinden. Aber danke für die Zusammenfassung aller Informationen.
Kateye
Aber ich verstehe nicht, warum Drupal sich so verhält wie jetzt. Wenn die Grundkonfiguration den Cron alle 3 Stunden ausführen soll, warum wartet er dann auf einen Besucher?
Kateye
1
Darüber nachdenken. Für Drupal gibt es natürlich keine Möglichkeit, einen Cron-Job ohne Bootstrapping auszuführen. Das Bootstrapping findet statt, wenn ein Besucher die Site besucht. Die Zusammenfassung lautet also: Wenn Sie wirklich geplante Cron-Jobs möchten, müssen Sie diese serverseitig einrichten.
Kateye
2
Genau. Auf einem Server passiert nichts, ohne dass jemand oder etwas es ausführt. Drupal 7 führt standardmäßig cron aus, wenn Benutzer gelegentlich eintreffen, um sicherzustellen, dass wichtige Aufgaben ausgeführt werden. Drupal 6 verließ sich auf das Cron-Modul von Poor Man, um dies zu tun, wenn kein richtiger Cron-Job vorhanden war ... und fast alles in Drupal benötigt zuerst den Bootstrap. Ein ordentlicher Cron-Job auf dem Server ist sicherlich die beste Option.
Jim Kirkpatrick
1
Die ANTWORT UNTEN beschreibt, wie dies behoben werden kann. Nicht dieser :(
Tomáš Fejfar
13

Drupal 7 baute in seine Module den Code ein, der in Poormanscron war , der genau dazu dient, Drupal-Cron-Aufgaben auf einer Site auszuführen, auf der es nicht möglich ist, Cron-Aufgaben festzulegen, wenn ein Benutzer Ihre Site besucht, und zwar alle X Stunden (wie festgelegt) die Seite, die Sie gesehen haben).

Wenn Sie dieses Verhalten vermeiden möchten, müssen Sie "Run cron every" auf "Never" setzen. im gegensatz zu dem, was scheinen könnte, beeinflusst dies nur, was passiert, wenn Benutzer Ihre Website besuchen. [1] Sie können weiterhin Drupal-Cron-Tasks von außerhalb von Drupal ausführen. Beachten Sie jedoch, dass in Drupal 7 cron.php von außerhalb von Drupal aufgerufen werden muss und den unter "Administration> Berichte> Statusbericht" angezeigten Wert übergibt.

 

Bildschirmfoto

 

 

 

 

 

[1]: Tatsächlich überprüfen weder cron.php noch drupal_cron_run () die auf dieser Einstellungsseite verwendete Drupal-Variable. Die einzigen verwendeten Drupal-Variablen sind:

  • "cron_key", der den Cron-Schlüssel enthält, der zur Vermeidung der Drupal-Cron-Aufgaben verwendet wird, wird von nicht autorisierten Benutzern ausgeführt
  • "maintenance_mode", der festgelegt wird, TRUEwenn sich die Site im Wartungsmodus befindet
  • "cron_last" enthält den Zeitstempel, zu dem die Cron-Tasks das letzte Mal ausgeführt wurden
kiamlaluno
quelle
Die einzige Schwierigkeit besteht darin, dass der Cron-Job bei jedem Aufrufen der Seite abläuft und Sie sich nicht einmal als Administrator anmelden können, um die Seite zu deaktivieren. Seufz ... Ich werde es herausfinden, aber es ist gut zu wissen, dass es deaktiviert werden kann, sobald ich dort
Ja, ich habe das schnell gelöst, indem ich einen Montastic-Uptime-Monitor eingerichtet habe, der alle 6 Stunden die Cron-Aktivierungs-URL "überprüft" ...
Anders,