Zum Inhalt springen

Cron & Hintergrundverarbeitung

PrimoCRM erledigt die gesamte rechenintensive Arbeit im Hintergrund: Kampagnenversand, Sequenz-Drips und Automatisierungsschritte werden von geplanten Workern verarbeitet, niemals im Seitenaufruf. Diese Worker laufen über den WordPress-Cron, weshalb ein zuverlässiger Cron dafür sorgt, dass Ihre E-Mails pünktlich herausgehen. Diese Seite erklärt, wie das funktioniert und wie Sie ihn stabil einrichten.

PrimoCRM registriert zwei benutzerdefinierte Zeitpläne und einen kleinen Satz von Hintergrund-Workern:

Worker Läuft Aufgabe
E-Mail-Versand von Kampagnen Nach Bedarf (nur solange eine Kampagne ausstehende E-Mails hat) Liefert eine Kampagne in gedrosselten Chargen aus
Sequenzverarbeitung Jede Minute Sendet fällige Sequenz-E-Mails
Automatisierungsverarbeitung Jede Minute Führt Kontakte durch Automatisierungsschritte
Warteschlangen-Integritätsprüfung Alle 5 Minuten Stellt hängende E-Mails wieder her und startet ins Stocken geratene Kampagnen neu

Jeder Worker beansprucht eine Charge von Arbeit, hält ein Zeitbudget ein, damit er niemals die Limits Ihres Hosters überschreitet, und plant sich selbst neu. Die 5-Minuten-Integritätsprüfung ist ein Sicherheitsnetz: Wenn ein Versand ins Stocken gerät, wird er beim nächsten Takt wieder in Gang gesetzt.

WordPress wird mit einem Pseudo-Cron ausgeliefert, der nur dann ausgelöst wird, wenn jemand die Website besucht. Auf einer viel besuchten Website ist das in Ordnung. Auf einer Website mit geringem Verkehr können Stunden vergehen, ohne dass Besuche stattfinden, sodass geplante Sendevorgänge erst ausgeführt werden, wenn der nächste Besucher eintrifft. Das Symptom ist eine Kampagne, die auf “Wird gesendet” steht und sich langsam oder gar nicht entleert.

Die Lösung besteht darin, den durch Besucher ausgelösten Pseudo-Cron durch einen echten Cron zu ersetzen, der nach einem festen Zeitplan läuft, idealerweise jede Minute.

  • Öffnen Sie PrimoCRM, dann Einstellungen und suchen Sie nach dem System- oder Cron-Status, der anzeigt, ob die Worker geplant sind und wann sie zuletzt gelaufen sind.
  • Oder installieren Sie ein Hilfsplugin wie WP Crontrol und vergewissern Sie sich, dass die Ereignisse primocrm_process_sequences, primocrm_process_automations und primocrm_queue_health_check vorhanden sind und ausgelöst werden.

Wenn eine Kampagne feststeckt und Ihre Website nur wenig Verkehr hat, ist fast immer der Cron die Ursache.

Zwei Schritte: Schalten Sie den WordPress-Pseudo-Cron aus und fügen Sie dann einen echten Cron hinzu, der jede Minute läuft.

Fügen Sie dies in die wp-config.php ein, und zwar oberhalb der Zeile “Das war’s, bitte nicht weiterbearbeiten”:

define( 'DISABLE_WP_CRON', true );

Dies hindert WordPress daran, den Cron bei Seitenaufrufen auszulösen, sodass Ihr echter Cron der einzige Auslöser ist.

Wählen Sie die Methode, die zu Ihrem Hosting passt.

WP-CLI (am besten, wenn Sie Shell-Zugriff haben):

* * * * * cd /path/to/wordpress && wp cron event run --due-now >/dev/null 2>&1

PHP-Binärdatei (ebenfalls großartig bei Shell-Zugriff):

* * * * * php /path/to/wordpress/wp-cron.php >/dev/null 2>&1

cPanel: Öffnen Sie Cron-Jobs, stellen Sie den Zeitplan auf jede Minute (* * * * *) ein und verwenden Sie einen der obigen Befehle mit dem vollständigen Pfad zu Ihrer Website.

Kein Shell-Zugriff (Shared Hosting)? Verwenden Sie einen kostenlosen Remote-Cron-Dienst wie cron-job.org, um Ihre Cron-URL über HTTP jede Minute aufzurufen:

https://yoursite.com/wp-cron.php?doing_wp_cron

Registrieren Sie sich bei dem Dienst, fügen Sie diese URL hinzu, stellen Sie das Intervall auf 1 Minute ein und speichern Sie. Dies ruft den WordPress-Cron von außen nach einem festen Zeitplan auf.

  • Eine Kampagne steckt bei “Wird gesendet” fest. Fast immer liegt es am Cron. Vergewissern Sie sich, dass ein echter Cron jede Minute läuft und dass DISABLE_WP_CRON gesetzt ist. Die 5-Minuten-Integritätsprüfung nimmt den Versand wieder auf, sobald der Cron läuft.
  • Automatisierungen oder Sequenzen laufen zu spät. Ihr Cron-Intervall ist zu lang, oder der Pseudo-Cron wartet auf Besucher. Wechseln Sie zu einem echten 1-Minuten-Cron.
  • Es wird überhaupt nichts gesendet. Unabhängig vom Cron sollten Sie bestätigen, dass Ihre Sendemethode konfiguriert ist und eine Test-E-Mail ankommt. Der Cron steuert, wann die Arbeit läuft; der Mailer steuert, ob er zustellt.
  • CPU-Limits von Shared Hostern. Die Worker verfügen über ein Zeitbudget und drosseln sich bei Last, sodass sie auf Shared Hosting sicher sind. Wenn sich Ihr Hoster dennoch beschwert, reduziert ein etwas längeres Intervall (2 bis 5 Minuten) die Häufigkeit auf Kosten der Pünktlichkeit.

Siehe auch Anforderungen für PHP- und Servervoraussetzungen sowie Versand und Zustellbarkeit für die Mailer-Seite.