Use loop and add enforce execution limit
[MAILPOET-3954]
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
<?php
|
<?php declare(strict_types = 1);
|
||||||
|
|
||||||
namespace MailPoet\Cron\Workers;
|
namespace MailPoet\Cron\Workers;
|
||||||
|
|
||||||
@@ -37,20 +37,21 @@ class WooCommerceSync extends SimpleWorker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function processTaskStrategy(ScheduledTaskEntity $task, $timer) {
|
public function processTaskStrategy(ScheduledTaskEntity $task, $timer) {
|
||||||
$lastProcessedOrderId = $task->getMeta()['last_processed_order_id'] ?? 0;
|
$meta = $task->getMeta();
|
||||||
$highestOrderId = $this->getHighestOrderId();
|
$highestOrderId = $this->getHighestOrderId();
|
||||||
|
|
||||||
$lastProcessedOrderId = $this->woocommerceSegment->synchronizeCustomers($lastProcessedOrderId, $highestOrderId);
|
if (!isset($meta['last_processed_order_id'])) {
|
||||||
|
$meta['last_processed_order_id'] = 0;
|
||||||
$meta = $task->getMeta() ?? [];
|
|
||||||
$meta['last_processed_order_id'] = $lastProcessedOrderId;
|
|
||||||
$task->setMeta($meta);
|
|
||||||
$this->scheduledTasksRepository->persist($task);
|
|
||||||
$this->scheduledTasksRepository->flush();
|
|
||||||
|
|
||||||
if ($lastProcessedOrderId !== $highestOrderId) {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user