Magento bietet seit Version 2.2 ein praktisches Feature: man kann die Cronjobs über einen CLI-Befehl einrichten lassen. Sehen wir uns an, wie.
Automatisch Cronjobs in crontab eintragen
Zuerst werfen wir einen Blick in den crontab eines frischen Servers. Normalerweise sind hier keine Jobs zu finden:
[/path/to/src/] $ crontab -l no crontab for magento
Nun führen wir vom Magento-Verzeichnis ausgehend den Befehl „cron:install“ aus:
[/path/to/src/] $ php bin/magento cron:install Crontab has been generated and saved
Der Befehl trägt neue Zeilen in crontab ein:
[/path/to/src/] $ crontab -l #~ MAGENTO START a6384c7896ad7f29f12f8dcf4c789ace * * * * * /usr/bin/php /path/to/src/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /path/to/src/var/log/magento.cron.log * * * * * /usr/bin/php /path/to/src/update/cron.php >> /path/to/src/var/log/update.cron.log * * * * * /usr/bin/php /path/to/src/bin/magento setup:cron:run >> /path/to/src/var/log/setup.cron.log #~ MAGENTO END a6384c7896ad7f29f12f8dcf4c789ace
Wir sehen im Beispiel, dass eine lange Zeichenkette „a6384c7896ad7f29f12f8dcf4c789ace“ eingefügt wird. Diese Neuerung in Version 2.2.2 identifiziert die Magento-Installation eindeutig. Somit lassen sich auch Cronjobs für mehrere Instanzen auf dem gleichen Server einrichten:
[/path/to/second/src/] $ php bin/magento cron:install Crontab has been generated and saved [/path/to/second/src/] $ crontab -l #~ MAGENTO START a6384c7896ad7f29f12f8dcf4c789ace * * * * * /usr/bin/php /path/to/src/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /path/to/src/var/log/magento.cron.log * * * * * /usr/bin/php /path/to/src/update/cron.php >> /path/to/src/var/log/update.cron.log * * * * * /usr/bin/php /path/to/src/bin/magento setup:cron:run >> /path/to/src/var/log/setup.cron.log #~ MAGENTO END a6384c7896ad7f29f12f8dcf4c789ace #~ MAGENTO START c0e21c698d07b4e1a2822f9b0f5c25d6 * * * * * /usr/bin/php /path/to/second/src/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /path/to/second/src/var/log/magento.cron.log * * * * * /usr/bin/php /path/to/second/src/update/cron.php >> /path/to/second/src/var/log/update.cron.log * * * * * /usr/bin/php /path/to/second/src/bin/magento setup:cron:run >> /path/to/second/src/var/log/setup.cron.log #~ MAGENTO END c0e21c698d07b4e1a2822f9b0f5c25d6
Ausführlich beschrieben wird der Befehl in den DevDocs.
Achtung bei der Verwendung von Symlinks
Wenn Sie mit Symlinks arbeiten (z.B. um Releases in neue Verzeichnisse zu deployen und dann nur den Schalter = Symlink umzulegen), müssen Sie noch für eine Kleinigkeit selbst Hand anlegen. Magento 2 folgt dem Symlink nämlich und schreibt den tatsächlichen Pfad in crontab. Über „crontab -e“ können Sie die Zeilen anpassen.
bin/magento cron:install – ein Beispiel für den Wert von Community-Beiträgen
Entwickler-Komfort-Features wie dieser Aufruf werden oft erst dadurch möglich, dass ProgrammiererInnen aus der Community Ihre Zeit und Hirnschmalz beitragen. Und natürlich, dass es mit Magento 2 möglich wurde als Nicht-Magento-MitarbeiterIn am Core mit zu arbeiten. Wer jetzt spontan Lust bekommen hat: das Community Engineering Team wartet auf Ihre Pull Requests!
Hi,
setup:cron:run benötigst du nur, wenn du den Web Setup Wizard verwendest, um Magento/Extensions upzudaten / zu installieren. Wenn nicht, dann kannst du den Cronjob weg lassen.
Beste Grüße
Matthias
Hi,
bei mir wurden die drei Cronjobs auch isntalliert – nur der Cronjob /bin/magento setup:cron:run macht Probleme. Sagt mir ständig, dass mein Memory nur auf 128M steht obwohl 3072M eingetragen ist.
Ist der Cronjob /bin/magento setup:cron:run wichtig?
VG Danio