Eigener Cronjob als Plugin wird nicht ausgeführt

Hallo, ich habe ein Plugin erstellt, welches einen Cronjob installiert, der wiederum eine Datenbankabfrage laufen lassen soll. Leider funktioniert irgendwas nicht. Der Cron steht derzeit auf 2 Minuten, wenn ich Ihn manuell ausführe über /backend/cron, dann steht dort zwar “Processing SetVariantAktive” aber es passiert nichts. Hier der Code private function registerEvents() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Index', 'onPostDispatchFrontend' ); } private function registerCronJobs() { $this-\>subscribeEvent( 'Shopware\_CronJob\_SetActive', 'onRunSetActiveCronJob' ); $this-\>createCronJob( 'SetActive', 'SetActiveCron', 900, true ); } public function onRunSetActiveCronJob(\Shopware\_Components\_Cron\_CronJob $job) { //first we have to get the current active slogan $sql= "UPDATE `db-sandbox`.`s_articles_details` SET `active` = '1' WHERE `s_articles_details`.`instock` \> 10"; Shopware()-\>Db()-\>fetchAll($sql); } Kann mir da jemand helfen, bin noch neue in dieser Programmierung :slight_smile:

Versuch es einmal so:     private function registerCronJobs()     {         $this-\>subscribeEvent(             'Shopware\_CronJob\_SetActive',             'onRunSetActiveCronJob'         );           $this-\>createCronJob(             'SetActive',             'SetActive',             900,             true         );     } Gruß

1 Like

Hallo, super, das funktioniert schonmal. Der SQL Befehl wird ausgeführt, dann gibt es allerdings einen Fehler, der den Cronjob auch deaktiviert: array ( 'error' =\> 'SQLSTATE[HY000]: General error', ) Was ist da wieder los? Finde leider bei Google keine passenden Hilfsmethoden.

Du musst Return true; zurück liefern.

und anstatt fetchAll() query() verwenden. Dann sollte es funktionieren :slight_smile: Gruß

1 Like

Ah, ich verstehe. Super, das funktioniert! Vielen Dank!