diff --git a/lib/Cron/Workers/WooCommerceSync.php b/lib/Cron/Workers/WooCommerceSync.php index 9cfa7a8c38..fdd8832ac3 100644 --- a/lib/Cron/Workers/WooCommerceSync.php +++ b/lib/Cron/Workers/WooCommerceSync.php @@ -1,4 +1,4 @@ -getMeta()['last_processed_order_id'] ?? 0; + $meta = $task->getMeta(); $highestOrderId = $this->getHighestOrderId(); - $lastProcessedOrderId = $this->woocommerceSegment->synchronizeCustomers($lastProcessedOrderId, $highestOrderId); - - $meta = $task->getMeta() ?? []; - $meta['last_processed_order_id'] = $lastProcessedOrderId; - $task->setMeta($meta); - $this->scheduledTasksRepository->persist($task); - $this->scheduledTasksRepository->flush(); - - if ($lastProcessedOrderId !== $highestOrderId) { - return false; + if (!isset($meta['last_processed_order_id'])) { + $meta['last_processed_order_id'] = 0; } + + do { + $this->cronHelper->enforceExecutionLimit($timer); + $meta['last_processed_order_id'] = $this->woocommerceSegment->synchronizeCustomers($meta['last_processed_order_id'], $highestOrderId); + $task->setMeta($meta); + $this->scheduledTasksRepository->persist($task); + $this->scheduledTasksRepository->flush(); + } while ($meta['last_processed_order_id'] !== $highestOrderId); + return true; }