In der Mautic Dokumentation zu Cron Jobs wird darauf hingewiesen, dass die drei wichtigsten Cron Jobs unbedingt nacheinander gestartet werden sollen. Allerdings reicht es aus unserer Sicht nicht aus, diese einfach einzeln nacheinander zu starten. Die Unbekannte ist die Laufzeit eines Cron Jobs. Insbesondere wenn es in der Mautic Datenbank bereits viele Kontakte gibt und neue Segmente dynamisch erstellt werden, kann es auch mal länger dauern.

Lösung 1 – Cron Jobs werden via shell Datei in Reihe aufgerufen

Unser Lösungsvorschlag: Wir packen die Cron Jobs in ein ausführbares shell file, in dem sie tatsächlich nacheinander aufgerufen werden. Dieses File wird dann regelmäßig durch einen Cron Job gestartet.

  1. Erstelle eine Datei, z.B. mit dem Namen „cronjob.sh“ im /app Verzeichnis in der Mautic Installation,
  2. Schreibe die drei Cronjobs hinein. Der Syntax sieht in etwa so aus:
    #!/bin/sh
    /PATHTOPHP/php /PATHTOMAUTIC/app/console mautic:segments:update
    /PATHTOPHP/php /PATHTOMAUTIC/app/console mautic:campaigns:rebuild
    /PATHTOPHP/php /PATHTOMAUTIC/app/console mautic:campaigns:trigger
  3. Dabei nicht vergessem PATHTOPHP und PATHTOMAUTIC an die eigene Installation anzupassen
  4. Für das Ausführen von cronjob.sh einen Cron Job anlegen

Achtung! Natürlich dürfen auch hierbei die Cron Jobs nicht zu schnell hintereinander gestartet werden. So soll verhindert werden, dass cronjob.sh bereits aufgerufen wird, bevor der letzte Lauf beendet wurde. Starten Sie z.B. alle 5 Minuten – die Notation lautet dafür */5 * * * * (weitere hier: https://crontab.guru/)

Lösung 2 – Cron Job ruft Mautic Befehle in Reihe

Mittlerweile verwenden wir eher eine zweite Variante, die deutlich schneller zu erstellen geht. Dazu verketten wir alle Mautic Aufgaben per „&&“ direkt bei der Einstellung der Cron Jobs (manchmal auch als „geplante Aufgaben“ benannt). Das funktioniert von Hoster zu Hoster unterschiedlich, oft über eine Administrationsoberfläche.

Der Befehl, der dann aufgerufen wird, sieht in etwa so aus:

/PATHTOPHP/php /PATHTOMAUTIC/app/console mautic:segments:update && /PATHTOPHP/php /PATHTOMAUTIC/app/console mautic:campaigns:rebuild && /PATHTOPHP/php /PATHTOMAUTIC/app/console mautic:campaigns:trigger

In dieser Variante ist das Risiko parallel laufender Cron Jobs niedriger, da das System in dem Fall noch den laufenden Cronjob „sieht“. In Variante 1 wird einfach ein shell script gestartet und der Cron Job ist sofort erfolgreich abgeschlossen.