- Adds new task scheduler configuration class

- Introduces method to start cron on demand when there are
  scheduled newsletters or queues in progress
This commit is contained in:
Vlad
2016-07-19 08:48:49 -04:00
parent ca2c1c2e6f
commit 6dd3c6acda
4 changed files with 84 additions and 13 deletions

View File

@@ -24,9 +24,7 @@ class Scheduler {
}
function process() {
$scheduled_queues = SendingQueue::where('status', 'scheduled')
->whereLte('scheduled_at', Carbon::createFromTimestamp(current_time('timestamp')))
->findMany();
$scheduled_queues = self::getScheduledQueues();
if(!count($scheduled_queues)) return;
foreach($scheduled_queues as $i => $queue) {
$newsletter = Newsletter::filter('filterWithOptions')
@@ -185,4 +183,10 @@ class Scheduler {
$notification_history :
false;
}
static function getScheduledQueues() {
return SendingQueue::where('status', 'scheduled')
->whereLte('scheduled_at', Carbon::createFromTimestamp(current_time('timestamp')))
->findMany();
}
}

View File

@@ -27,7 +27,7 @@ class SendingQueue {
function process() {
$this->mailer_task->checkSendingLimit();
foreach($this->getQueues() as $queue) {
foreach(self::getRunningQueues() as $queue) {
// get and pre-process newsletter (render, replace shortcodes/links, etc.)
$newsletter = $this->newsletter_task->getAndPreProcess($queue->asArray());
if(!$newsletter) {
@@ -168,6 +168,13 @@ class SendingQueue {
->findMany();
}
static function getRunningQueues() {
return SendingQueueModel::orderByDesc('priority')
->whereNull('deleted_at')
->whereNull('status')
->findMany();
}
function updateQueue($queue) {
$queue->count_processed =
count($queue->subscribers['processed']) + count($queue->subscribers['failed']);