CronJobs funktionieren nicht?

Hallo, ich habe mir gerade einmal dieses Tutorial angesehen (genauer: diesen Teil), da ich mir gern einen Cronjob basteln würde, der jede Stunde etwas aktualisiert. Aber irgendwie passiert nichts, weder bei dem Beispiel noch bei einem anderen Versuch von mir, einen Cronjob zu registrieren. Was den Code des Beispiels angeht: private function registerCronJobs() { $this-\>createCronJob( 'SwagSloganOfTheDay', 'SloganOfTheDayCron', 10, true ); $this-\>subscribeEvent( 'Shopware\_CronJob\_SloganOfTheDayCron', 'onRunSloganCronJob' ); } (Die registerCronJobs()-Funktion wird direkt in der install()-Funktion der Bootstrap.php aufgerufen. Und ich hab die Zeit auf 10 Sekunden herunter gesetzt weil ich gucken wollte ob sich etwas ändert, einmal am Tag wäre ja etwas wenig zum Testen) public function onRunSloganCronJob(Shopware\_Components\_Cron\_CronJob $job) { //first we have to get the current active slogan $sql= "SELECT \* FROM slogans WHERE active = ?"; $activeSlogan = Shopware()-\>Db()-\>fetchRow($sql, array(1)); //now we disable all slogans $sql = "UPDATE slogans SET active = ?"; Shopware()-\>Db()-\>query($sql, array(0)); //than we have to get the next slogan id $nextSloganId = $this-\>getNextSloganId($activeSlogan['id']); //now we can set the next slogan active $sql = "UPDATE slogans SET active = ? WHERE id = ?"; Shopware()-\>Db()-\>query($sql, array(1, $nextSloganId)); $sql= "SELECT \* FROM slogans WHERE active = ?"; $newSlogan = Shopware()-\>Db()-\>fetchRow($sql, array(1)); echo " "; echo "Vorherige Slogan : " . $activeSlogan['text']; echo " "; echo "Aktiver Slogan : " . $newSlogan['text']; echo " "; return true; } Aber im Frontend ändert sich der Slogan trotzdem nicht bzw. es passiert generell nichts. Fehlt mir irgendetwas? Hab ich etwas übersehen? lg Luna

Hallo Luna, ist denn das Cron-Plugin bei dir installiert? Dieses wird für die Ausführung von Shopware-Cronjobs dringend benötigt. Weitere Informationen zu diesem Thema findest du hier. Gruß, Patrick :shopware:

Vielen Dank für die schnelle Antwort! Also die Plugins “Cron” und “CronRefresh” hatte ich bereits installiert und die Seite hatte ich auch schon gesehen aber nicht so richtig etwas damit anfangen können, weil ich die Cronjobs ja über den Code einrichten wollte und es da ja mehr um Browser/Backend ging… Aber gut, über den Browser starten sie jetzt zumindest (hab die restlichen Plugins dazu installiert, vorher leitete die Seite nämlich irgendwie auf das normale Backend), aber automatisch passiert da auch nichts, nur wenn ich es manuell aufrufe… hmm… Trotzdem vielen Dank, hätte vermutlich auch selbst drauf kommen können den Rest dazu zu installieren. :oops: lg Luna

Ich bin’s nochmal, hab das mit dem Cronjob an sich inzwischen recht gut verstanden glaube ich und ich kann per /backend/cron auch wunderbar manuell testen, alles super. Aber irgendwie mag der Cronjob trotz Allem nicht von sich aus laufen… Er wird als aktiv in den Einstellungen angezeigt und alles, ich seh auch die Zeit wann er sich das nächste mal aktivieren soll, aber wenn es soweit ist passiert einfach nichts… Ich weiß nicht ob es daran liegt, dass ich Windows nutze, aber auf einem anderen PC mit Linux hat es auch nicht funktioniert als ich es testen wollte… deswegen dachte ich mir frage ich nochmal nach: Geht es tatsächlich nur auf Linux? Und wenn ja, muss man dort zusätzlich etwas einstellen? Oder hab ich nur so irgendetwas übersehen? lg Luna

Hallo Luna, vielleicht hast du einfach nur vergessen den CronJob in der Crontab einzutragen. Verbinde dich mit deinem Server via SSH und führe folgenden UNIX Befehl aus: crontab -e In dem geöffneten Fenster kannst du nun den CronJob eintragen. Dieser könnte z.B so aussehen: 30 \* \* \* \* root /var/www/shopware.php module=backend controller=cron Eine ausführliche Anleitung findest du hier: » Crontab einrichten

Vielen Dank, ich komme zwar gerade nicht an den Linux-PC, aber ich werde es dann auf jeden Fall mal versuchen, das kann nämlich gut sein… Bin leider nicht so erfahren mit Linux. Naja, ich versuche es morgen einmal und berichte dann ob es geklappt hat. :slight_smile: lg Luna