Hallo zusammen
Ich versuche gerade, mit einem Cronjob einen API-Endpunkt eines Fremdsystems mit allen Artikeln (ca. 30'000) des Shops zu beliefern.
Laut der Dokumentation sollte der Cronjob solange zyklisch aufgerufen werden, bis setFinished(true) gesetzt wurde. (Link zum Guide)
Der Code wird jedoch nur einmal gestartet und die Ausführung des Cronjobs im Anschluss beendet, selbst wenn ich mit setFinished(false) eine Endlosausführung provoziere.
Wenn ich in die Methode get_collection() einen Loop einbaue, erhalte ich, eine Execution Timeout und der Cronjob wird nie als beendet markiert, da die Datenmenge zu gross ist.
Die Cronausführung stosse ich mit https://shop.local/includes/cron_inc.php an. Für die Pluginentwicklung nutze ich aktuell die Version 5.3.0-rc.2.
Der entsprechende Code sieht so aus:
Leider stimmt der Inhalt Demo-Plugins nicht mit der Dokumentation überein, das hilft mir auch nicht weiter.
Deshalb meine Frage: Interpretiere ich da die Dokumentation falsch oder übersehe ich was bei der Implementierung?
Ich versuche gerade, mit einem Cronjob einen API-Endpunkt eines Fremdsystems mit allen Artikeln (ca. 30'000) des Shops zu beliefern.
Laut der Dokumentation sollte der Cronjob solange zyklisch aufgerufen werden, bis setFinished(true) gesetzt wurde. (Link zum Guide)
Der Code wird jedoch nur einmal gestartet und die Ausführung des Cronjobs im Anschluss beendet, selbst wenn ich mit setFinished(false) eine Endlosausführung provoziere.
Wenn ich in die Methode get_collection() einen Loop einbaue, erhalte ich, eine Execution Timeout und der Cronjob wird nie als beendet markiert, da die Datenmenge zu gross ist.
Die Cronausführung stosse ich mit https://shop.local/includes/cron_inc.php an. Für die Pluginentwicklung nutze ich aktuell die Version 5.3.0-rc.2.
Der entsprechende Code sieht so aus:
PHP:
class MyCron extends Job
{
public function start(QueueEntry $queueEntry): JobInterface
{
parent::start($queueEntry);
$res = $this->get_collection(ProductModel::class, 'product');
$this->setFinished($res);
return $this;
}
public function get_collection(string $modelClass, string $index): bool
{
/** Hole x Artikel aus der Datenbank */
/** Wenn Cursor noch nicht am Ende: return false */
return false;
}
}
Leider stimmt der Inhalt Demo-Plugins nicht mit der Dokumentation überein, das hilft mir auch nicht weiter.
Deshalb meine Frage: Interpretiere ich da die Dokumentation falsch oder übersehe ich was bei der Implementierung?