Cronjob mittels .sh-Datei bei DomainFactory Hosting

Hallo,

wir versuchen gerade die Cronjobs alle 5 Minuten laufen zu lassen um unsere Bestellungen mittels Erweiterung zu exportieren. Ich selbst habe bisher nur mit WordPress gearbeitet, weshalb mir der Support ein bisschen schwer fällt.

#!/bin/bash
/usr/bin/php webseiten/shop/bin/console messenger:consume default --time-limit=60
/usr/bin/php webseiten/shop/bin/console scheduled-task:run --time-limit=60

Folgendes Script haben wir in einer cronjob.sh und rufen dies über das DomainFactory Backend regelmäßig auf - mit mäßigem Erfolg. Es gibt eine Fehlermeldung aus und Programmierer sowie Hoster schieben sich gegenseitig die Schuld zu.

Da ich nicht beurteilen kann ob an diesem Script/Vorgehen etwas falsch ist, obwohl ich mich jetzt schon recht viel eingelesen habe, wollte ich hier nochmal nachfragen ob jemand einen Tipp hätte.

Lieben Gruß
Henry

/usr/bin/php << sollte da nicht noch die php Version rein?
Bei mir sieht es so aus:
1 Cronjob mit Ausführungszeit */1 * * * *
Befehl:
/usr/bin/php7.4 /home/www/shopware6/bin/console messenger:consume default --time-limit=60

Ein weiterer Cronjob mit dem Befehl:
/usr/bin/php7.4 /home/www/shopware6/bin/console scheduled-task:run --time-limit=60

Aber vielleicht hilft dir das weiter.

PS: Lass dich nicht von /home/www… irritieren da kommt bei jedem halt sein eigener Pfad hin

Magst du uns die Fehlermeldung vielleicht mitteilen?
Scripte die in der Cronjobtabelle stehen, sollten ohne Cronjobtriggere ja auch manuell anstoßbar sein. Wenn es da schon scheitert, sollte man diesen Fehler erstmal ausschließen.

Hallo ihr Beide,

danke für die Rückmeldungen. Die Fehlermeldung lautet lapidar „Unbekannter Fehler beim Ausfuehren des Cronjobs Nr. 242612“.

Scheinbar wird es aber ausgeführt, da ich im Cron Manager alle 5 Minuten eine Ausführung sehe.

Danke!

Kannst du das Script auf dem Commanline-Interface ausführen?
Deine Fehlermeldung rührt ja noch von einer Ausführung als Cronjob.

Hi @jonas-sfx ,

tatsächlich bin ich nicht so tief im Thema drin. Der Cronjob funktioniert jetzt auch, das wird wohl an 1.) dem absoluten Pfad (lt. DomainFactory Support) und dem leeren vom Cache herführen … darauf muss man auch erstmal kommen.

Ich dachte mir in dem Atemzug, da der Shop schon mal nicht lief weil der Webspace voll war, dass es klug wäre den Cache zu leeren.

Gleiche Methode:

#!/bin/bash
/usr/bin/php /kunden/XXX/webseiten/shop/bin/console cache:clear --time-limit=60
/usr/bin/php /kunden/XXX/webseiten/shop/bin/console http:cache:warm:up --time-limit=60

Hier allerdings folgende Fehlermeldung:

-bash: /kunden/XXX/webseiten/shop/cron-cache-leeren.
sh: Permission denied

Hast du eine Idee?

Nachtrag: Die Berechtigung der Datei fehlten. Nun erhalte ich aber noch das :frowning:

 // Clearing the cache for the prod environment with debug

 // false


PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to all
ocate 32768 bytes) in /kunden/XXX/webseiten/shop/var
/cache/prod_ha431609aed9b98294a6de62ff2bda13_/ContainerGSdKixg/Shopware_Producti
on_KernelProdContainer.php on line 39866
08:05:13 CRITICAL  [php] Fatal Error: Allowed memory size of 134217728 bytes exh
austed (tried to allocate 32768 bytes) ["exception" => Symfony\Component\ErrorHa
ndler\Error\OutOfMemoryError { 
}]

In Shopware_Production_KernelProdContainer.php line 39866:

  Error: Allowed memory size of 134217728 bytes exhausted (tried to allocate
  32768 bytes)


cache:clear [--no-warmup] [--no-optional-warmers]

Joa, dein php versucht mehr als 128 MB Memory zu bekommen. (Weil es das da wohl aktuell braucht) und knallt gegen ein Limit.

Weißt du wo das Limit liegt?

Evtl. steht da was in der php.ini (und lässt sich dort sogar ändern)
Evtl. erfährst du es auf der Konsole mit php -i | grep memory_limit und evtl. kannst du es mit /usr/bin/php -d memory_limit=256M ... auch temporär jeweils für die beiden aufrufe ändern.

1 „Gefällt mir“

phpinfo.php sagt 512 MB :confused:

Die Kapazitäten (und sogar php-Versionen) für den Webserver und die Commandline können abweichen.
Was sagt das memory-limit der Commandline-phpinfo aka php -i bzw. php -i | grep memory_limit?

Falls du hier in der phpinfo ein limit siehst, dass du gar nicht erst erreichen kannst: Unterhalte dich doch mal bitte mit dem Support deines Hosters darüber.

Ich grabe mal dieses Thema wieder aus. Wir sind bei ebenfalls bei Domainfactory und schaffen es nicht die Cronjobs für die Worker einzurichten. Vielleicht kann hier jemand weiterhelfen.
Ich habe folgendes aus dem DF Forum übernommen und noch das „async“ dazugesetzt, dass man ab 6.5 wohl braucht/verwenden soll.

#!/bin/bash
 env -i cd /kunden/xxx_yyy/kundenordner/sw6
 env -i /usr/bin/php82 -f /xxx_yyy/kundenordner/sw6/bin/console messenger:consume async --time-limit=240 --memory-limit=512M

Es wurde dann ein Cronjob in DF eingerichtet, der die Datei aufruft, allerdings kommt dort einfach nur der Fehler „Unbekannter Fehler beim Ausfuehren des Cronjobs“.

Auch ich habe das Problem, dass ich unsere Cronjobs nicht zum rund laufen bekomme.
Versuch war (ebenfalls für 6.5)
Habt ihr inzwischen eine Lösung gefunden?

#!/bin/bash
env -i /usr/bin/php81 -f /xxx_yyy/kundenordner/sw6s/bin/console cache:clear async --time-limit=240 --memory-limit=512M

Auch wis stehen bei dem Fehler „Unbekannter Fehler beim Ausfuehren des Cronjobs“.

Läuft bei uns so reibungslos:

#!/bin/bash
env -i cd /xxx_yyy/kundenordner/sw6s/
env -i /usr/bin/php82 /xxx_yyy/kundenordner/sw6s/bin/console cache:clear async --time-limit=240 --memory-limit=512M

Die Worker mit folgendem Einzeiler:

/usr/bin/php82 -f /xxx_yyy/kundenordner/sw6s/bin/console messenger:consume failed async --time-limit=295

/usr/bin/php82 /xxx_yyy/kundenordner/sw6s/bin/console scheduled-task:run --time-limit=300