Rotate scheduled tasks

Scheduled tasks should rotate so that they don't block
sending when they cannot be send.

[MAILPOET-1391]
This commit is contained in:
Pavel Dohnal
2018-06-04 16:00:32 +01:00
parent 24b63d324b
commit b8ce6ff88c
5 changed files with 52 additions and 1 deletions

View File

@@ -5,6 +5,7 @@ namespace MailPoet\Cron\Workers;
use Carbon\Carbon;
use MailPoet\Cron\CronHelper;
use MailPoet\Models\Newsletter;
use MailPoet\Models\ScheduledTask;
use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberSegment;
use MailPoet\Segments\SubscribersFinder;
@@ -29,6 +30,7 @@ class Scheduler {
function process() {
$scheduled_queues = self::getScheduledQueues();
if(!count($scheduled_queues)) return false;
$this->updateTasks($scheduled_queues);
foreach($scheduled_queues as $i => $queue) {
$newsletter = Newsletter::filter('filterWithOptions')
->findOne($queue->newsletter_id);
@@ -177,6 +179,13 @@ class Scheduler {
false;
}
private function updateTasks(array $scheduled_queues) {
$ids = array_map(function ($queue) {
return $queue->task_id;
}, $scheduled_queues);
ScheduledTask::touchAllByIds($ids);
}
static function getScheduledQueues() {
return SendingTask::getScheduledQueues(self::TASK_BATCH_SIZE);
}