keine Crons?

Gibt es in SW6 keine Möglichkeit, Cronjobs zu verwalten bzw. auch neue Cronjobs über ein Plugin anzulegen?

Doch, schau mal hier: https://docs.shopware.com/en/shopware-platform-dev-en/how-to/scheduled-tasks

okay aber es gibt keine Möglichkeit, das im Backend zu machen bzw. einzusehen?

in SW5 gibts ja diese Maske

und auch die Übersicht, um schnell mal zu checken ob alle Crons noch laufen

in deiner genannten Doku gibts auch keinen Hinweis darauf, wie man das mit der Benachrichtigung bei nem Fehler einstellen kann…

und was muss ich tun, um regelmäßig meinen Cronjob dann auch zu triggern? In SW5 musste man ja einen Cronjob am Server anlegen, der dann über Bash alle Crons in Shopware triggert.

Ein Modul für die Konfiguration von Intervallen gibt es aktuell nicht, ausgeführt wird der „Scheduled Task Runner“ über die CLI:

bin/console scheduled-task:run 

Ein Ticket für die Evaluierung eines eigenen Moduls wurde auch schon eingestellt:

https://issues.shopware.com/issues/NEXT-7255

Gerne man ein Vote dort hinterlegen.

@AndreHerking‍

heißt das, man kann aktuell nicht sinnvoll mit automatisierten Prozessen (Crons) arbeiten?

bzw: 

ausgeführt wird der “Scheduled Task Runner” über die CLI: bin/console scheduled-task:run 

kann ich diesen CLI Befehl von einem Cron auf meinem Server triggern? Führt der alle Tasks aus, die gerade vom Interval her dann auch angestoßen werden müssen?

Du kannst den Task Runner auf deinen Sever ja regelmäßig ausführen, Stichwort crontab - ist also was das angeht nicht viel anders als bei Shopware 5. Die Intervalle sind derzeit im Code festgelegt, Beispiel für die Sitemap:

https://github.com/shopware/platform/blob/6.1/src/Core/Content/Sitemap/ScheduledTask/SitemapGenerateTask.php#L14-L16

Also ist der Runner nichts anderes als das vorherige sw:cron:run, nur die Intervallpflege über ein Modul ist derzeit nicht möglich.

@AndreHerking schrieb:

Du kannst den Task Runner auf deinen Sever ja regelmäßig ausführen, Stichwort crontab - ist also was das angeht nicht viel anders als bei Shopware 5. Die Intervalle sind derzeit im Code festgelegt, Beispiel für die Sitemap:

https://github.com/shopware/platform/blob/6.1/src/Core/Content/Sitemap/ScheduledTask/SitemapGenerateTask.php#L14-L16

Also ist der Runner nichts anderes als das vorherige sw:cron:run, nur die Intervallpflege über ein Modul ist derzeit nicht möglich.

 

Moin Andre,

der Task Runner läuft ja grundsätzlich in einer Endlosschleife, oderr?! Wie sieht hier die best-practice-Lösung aus? Macht es Sinn, den Timeout Parameter zu nutzen oder das Script - bzw. beide - in einer Endlosschleife laufen zu lassen?

Nicht wenige kleine Shops laufen in einer eingeschränkten Umgebung, z.B. im Sharedhosting.
Dort gibt es i.d.R. keine lokalen Crons - „crontab“, man kann nur Crons auf WWW einrichten (z.B. all-inkl.)
In solchen Umgebungen ist es also mit Shopware 6 nicht mehr möglich, „Tasks“ automatisiert laufen zu lassen, ohne im Admin eingeloggt zu sein (was ja wieder neue Probleme bereitet - siehe Problem, wenn mehrere User das Backend benutzen).
Ich habe zwar einen SSH-Zugang, und kann somit manuell den Tast Runner starten. Ich könnte auch auf einem anderen Rechner - z.B. meine Windows-Kiste - mit „geplanten Tasks“ remote via ssh den Runner anwerfen. Aber das sind ja alles keine Lösungen, eher wieder nur Frickeleien rund um die Unzulänglichkeiten von SW6.

Wie stellt Ihr von @Shopware Euch also den Einsatz von SW6 auf Hostingpaketen vor, die keine lokale „crontab“ anbieten?

Hast du ein Beispiel für ein zertifiziertes Hostingpaket wo das so ist?
Über Plesk kannst du ja auch Konsolenbefehle ausführen, einen reinen http-Cron habe ich schon Jahre nicht mehr gesehen. Selbst bei 2-3€ Hostingpaketen habe ich die Möglichkeit Crons per Konsole auszuführen.

 

Wir haben auch ein Ticket zu dem Admin-Background Task.

Hmm - habe ich bei all-inkl. etwas übersehen? Es sind nicht wenige hier, die einen Shop bei All-Inkl. haben. Und dort kann ich im KAS nur einen Cron auf http/https-Pfade hinterlegen. Einen echten “Cron” auf Prozess-Ebene gibt es dort nicht. Du hast ja einen Account bei All-Inkl… was muss ich da genau machen?

Ich rede extra nicht über “zertifizierte Hostingpakete”. Ich glaube auch nicht, dass es im Interesse von Shopware ist, nur noch auf “zertifizierte” zu verweisen.

Der “Admin-Background” ist ja auch nur eine Behelfslösung. Für gewisse Zwecke müsste man dann ja 24/7 angemeldet sein Wink

Eins mach ich sicher nicht: Für einen zukünftigen Update auf SW6 zu einen “zertifizierten Hoster” zu wechslen. Dann wechsel ich lieber zu einer Software, die bei dem Hoster meiner Wahl läuft. Mit dem Verweis auf “zertifiziert” hätte ich mir letztes Jahr auch den HokusPokus https=>http/2=>all-inkl ersparen können  Wink

Geht das ggf. über Shellskripte (laut der dortigen Hilfe)?

@R4M‍
Auf Shell kome ich via SSH - kein Problem. Aber “crontab” gibt es nicht.
Anleitung geht nach https://all-inkl.com/wichtig/anleitungen/kas/tools/cronjobs/einrichtung_479.html nur via http/https
Ich würde es dann ggf. echt so machen, dass ich via Cron auf Drittrechner (Windows,Linux) per SSH (z.B. putty) auf die Console zugreife und per remote-execute den Runner starte, würde ich es benötigen. Wäre eine Weg. Ist halt nur schade, dass es derzeit keine “echte” Lösung gibt.

Scriptlösung:
https://all-inkl.com/wichtig/anleitungen/skripte/sonstiges/per-script/shellscripte-ausfuehren_304.html
Problem bei der Variante ist halt die execution-time

Für mich ist somit das Thema auch schon wieder erledigt  Wink

Naja meinte ja via Cron eine Datei erstellen, die dann per Shellskript den eigentlichen Cron bei SW ausführt. Habe das allerdings auch nicht ausprobiert.

Die Max-Execution Time ist ja in Ordnung, dann muss man das Script nur öfter aufrufen.

Wir haben das wie gesagt ja nochmal zur Prüfung auf dem Schirm.

1 Like

@sonic‍ Der SW6 Worker sollte eh nicht länger als 5 min laufen. Du kannst am Command definieren wie lange er maximal laufen sollte. Das kannst du gleich setzen wie dein max_execution_time

1 Like

Das hilft! THX @Shyim‍  Thumb-Up

@Shyim schrieb:

@sonic‍ Der SW6 Worker sollte eh nicht länger als 5 min laufen. Du kannst am Command definieren wie lange er maximal laufen sollte. Das kannst du gleich setzen wie dein max_execution_time

Vielleicht unwahrscheinlich aber wie würde es sich verhalten wenn genau mit dem erreichen der maximalen Ausführungszeit der Worker gerade arbeitet? Und wie verhält sich das mit dem eigentlichen Cron, soll dieser auch eine maximale Ausführungszeit von 5 Minuten haben?

Für mich ist es momentan noch nicht so schlüssig, wie verhindert wird dass bei einer “stumpfen” und hart gesetzten Endzeit ein Abbrechen genau beim durchlaufen verhindert werden soll.

@Shyim‍

Der SW6 Worker sollte eh nicht länger als 5 min laufen

was mach ich, wenn ich einen regelmäßigen Import realisieren will? Der läuft u. U. 1-2 Stunden am Stück. Geht das nicht?

ich versteh nicht, wie das funktioniert… bekomm meine Crons einfach nicht ans laufen. Auch nich mit bin/console messenger:consume oder bin/console scheduled-task:run … es läuft einfach nicht…

was muss ich genau tun, um meine Jobs einmal täglich automatisch ausführen lassen zu können? Muss ich auf dem Server noch was einrichten? Wenn ja, was?

Kann jemand helfen?

Ich verstehe nicht, warum du dir nicht einfach einen CLI Befehl schreibst (Symfony Command) den du per Cron in deinem Intervall triggerst. Scheint mir effektiver zu sein, als mit den Scheduled Tasks zu arbeiten, die eben auch technisch keine Crons sind. Das ist doch die einfachste Lösung. 

Sicherlich kann man das per Scheduled Tasks irgendwie hin bekommen, aber scheint mir nicht sehr zielführend zu sein. Das war ja in SW5 auch schon der beste Weg, statt über den Cron zu gehen.