Wenn Sie mit UNIX oder Linux vertraut sind, kennen Sie Cron vielleicht als Daemon oder Hintergrundprozess, der verwendet wird, um Aufgaben in regelmäßigen Zeitabständen zu planen. Diese Aufgaben oder „Cronjobs“ werden im Allgemeinen auf Servern ausgeführt und umfassen das Sichern von Datenbanken und anderen Dateien, das Bereinigen von Protokollen, das Senden von Systemberichten oder Newslettern usw. Sie werden in einer Crontab-Datei definiert und als folgender Ausdruck dargestellt.
# Minute Stunde Tag_des_Monats Monat Tag_der_Woche Befehl
# Zum Beispiel, um tägliche Datenbanksicherungen um 00:00 Uhr mit Drush durchzuführen
0 0 * * * /usr/bin/drush sql-dump --gzip --result-file="/path/db_`date '+%Y_%m_%d'`.sql"
Wenn es um Drupal geht, ist der Zweck von Cron ähnlich, aber seine Implementierung ist anders. Drupals automatisierter Cron ist ein Kernmodul und unterscheidet sich von dem in UNIX-ähnlichen Betriebssystemen verfügbaren Cron.
Der automatisierte Cron registriert einen Event-Subscriber. Immer wenn eine Anfrage an Ihre Drupal-Website gestellt wird, wird ein Codeabschnitt ausgeführt. Wenn wir uns diesen Code genauer ansehen, können wir feststellen, dass der automatisierte Cron, falls aktiviert, die geplanten Jobs oder Aufgaben nur dann ausführt, wenn die Differenz zwischen den Zeitstempeln der letzten Anfrage und der letzten Ausführung des Cron größer ist als das konfigurierte Intervall des Cron.
$interval = $this->config->get('interval');
if ($interval > 0) {
$cron_next = $this->state->get('system.cron_last', 0) + $interval;
if ((int) $event->getRequest()->server->get('REQUEST_TIME') > $cron_next) {
$this->cron->run();
}
}
Der automatisierte Cron von Drupal wird von vielen Kern- und Zusatzmodulen verwendet. Wenn Sie die Run-Methode genauer untersuchen, werden Sie feststellen, dass sie hauptsächlich zwei Dinge tut: Sie führt den Hook hook_cron aus und verarbeitet die Queue-Worker aller Kern- und Zusatzmodule. Wir werden später darauf zurückkommen und sehen, wie wir sie in unserem eigenen Modul implementieren können.
Wofür wird Drupal Cron verwendet?
Viele Kern- und Zusatzmodule verwenden Cron, um regelmäßige Wartungsarbeiten durchzuführen. Alle diese Jobs werden ausgeführt, wenn Cron ausgeführt wird. Sie müssen jedoch jedem Cronjob einen anderen Zeitraum zuweisen. Einige davon werden im Folgenden beschrieben.
Modul |
Typ |
Job |
dblog |
Kern |
Entfernt abgelaufene Protokollmeldungen und Flood-Control-Ereignisse |
Feld |
Kern |
Löscht gelöschte Field-API-Daten |
Verlauf |
Kern |
Löscht den Verlauf |
Suche |
Kern |
Aktualisiert indizierbare aktive Suchseiten |
Scheduler |
Zusatzmodul |
Veröffentlicht oder deaktiviert Nodes |
System |
Kern |
Bereinigung (Caches, Batch, Flood, temporäre Dateien usw.) |
Aktualisierung |
Kern |
Prüft auf Aktualisierungen |
Wie wird Cron ausgeführt?
Nachdem wir nun verstanden haben, was Cron ist und wofür er verwendet wird, wollen wir uns ansehen, wie wir Cron ausführen und diese Jobs durchführen können.
- Automatisierte Ausführung
Standardmäßig ist Cron so eingestellt, dass er alle 3 Stunden ausgeführt wird. Diese Dauer kann verlängert oder verkürzt werden, und diese automatisierte Ausführung kann auch deaktiviert werden. Wenn die detaillierte Protokollierung aktiviert ist, werden die Ausführungszeit und alle hook_cron in den Protokollmeldungen protokolliert.
Konfigurieren des Intervalls Wie bereits erwähnt, geschieht dies jedoch nur, wenn Ihre Website aktiv ist. Wenn Ihre Website keine Anfragen erhält, wird Cron nie ausgeführt.
-
Manuelle Ausführung
Wenn Sie Cron manuell ausführen möchten, gibt es 4 Möglichkeiten:-
Über die Admin-Benutzeroberfläche
Navigieren Sie zu Verwalten → Konfiguration → System → Cron und klicken Sie auf „Cron ausführen“Manuelles Ausführen von Cron -
Verwendung eines geheimen Schlüssels
Cron kann auch von außerhalb der Website ausgeführt werden, indem der geheime Schlüssel verwendet und eine Anfrage an cron/{your-secret-key} gestellt wird. Ihr geheimer Schlüssel ist unter admin/config/system/cron verfügbar.$ wget -q -O /dev/null "{your-drupal-site}/cron/{your-secret-key}" # Oder $ curl -s -o /dev/null "{your-drupal-site}/cron/{your-secret-key}"
-
Verwendung von Drush
$ drush cron -
Verwendung der Drupal-Konsole
$ drupal cron:execute # oder verwenden Sie einen Alias - croe oder cre
-
- Ausführung mit System-Cron
Es wird empfohlen, nach Möglichkeit den System-Cron anstelle des automatisierten Drupal-Crons zu verwenden. Wenn Sie sich auf den Drupal-Cron verlassen, um wichtige Jobs auszuführen, sollten Sie den automatisierten Cron vollständig deaktivieren und den System-Cron verwenden, um den Drupal-Cron auszuführen. Auf diese Weise können Sie das Beste aus beiden Welten nutzen.
Wenn Sie über SSH auf Ihren Server zugreifen können, können Sie die Crontab-Datei mit crontab -e öffnen und den folgenden Cron-Ausdruck hinzufügen, um Cron beispielsweise stündlich auszuführen.0 * * * * cd /var/www/html/drupal8 && /usr/bin/drush cron # oder führen Sie Cron von außerhalb der Website aus 0 * * * * wget -q -O /dev/null "{your-drupal-site}/cron/{your-secret-key}" # oder 0 * * * * curl -s -o /dev/null "{your-drupal-site}/cron/{your-secret-key}"
Implementieren von Cronjobs in einem benutzerdefinierten Modul
Sie können Jobs in Ihrem benutzerdefinierten Modul implementieren. Diese werden ausgeführt, wenn Cron ausgeführt wird. Es gibt zwei Möglichkeiten, dies zu tun: mit hook_cron und mit Queue-Workern.
- Verwendung von hook_cron
Implementieren Sie hook_cron in der .module-Datei wie jeden anderen Hook./** * Implements hook_cron(). */ function custom_module_cron() { // your job here }
- Verwendung von QueueWorkers und Queues
Für Jobs, die eine längere Verarbeitungszeit benötigen, können wir sie zu Queues hinzufügen. Wir müssen ein QueueWorker-Plugin im Verzeichnis /src/Plugin unseres Moduls definieren, indem wir die Klasse QueueWorkerBase erweitern und die Methode processItem implementieren.
Zusammenfassend
Drupal Cron ist ein Pseudo-Cron und wird normalerweise verwendet, um regelmäßige Wartungsarbeiten durchzuführen. Er wird oft als „Cron für arme Leute“ bezeichnet, da er für seine Ausführung von Seitenanfragen abhängt und hauptsächlich verwendet wird, wenn Ihr Hosting es Ihnen nicht erlaubt, System-Cron auszuführen. Verwenden Sie daher nach Möglichkeit den System-Cron, um wichtige Jobs auszuführen.
Abonnieren
Verwandte Blogs
Zurück von der DrupalCon Atlanta 2025: Ein Meilenstein für OpenSense Labs

„Fit. Schnell. Für die Ewigkeit gebaut.“ Das war nicht nur ein Slogan, sondern die Denkweise, mit der wir zur DrupalCon…
Erklärbare KI-Tools: SHAPs Stärke in der KI

Wissen Sie, was erklärbare KI-Tools sind? Erklärbare KI-Tools sind Programme, die zeigen, wie eine KI ihre Entscheidungen…
KI-Chatbots: Präzision und Persönlichkeit in Perfektion

In der Welt der künstlichen Intelligenz ist die Entwicklung eines KI-Chatbots, der nicht nur akkurate Informationen liefert…