Don't load subscriber IDs in memory when preparing tasks from static segments [MAILPOET-903]

This commit is contained in:
stoletniy
2018-02-13 20:36:01 +03:00
parent 4c0f5bb456
commit 84dfa88a1a
5 changed files with 152 additions and 17 deletions

View File

@@ -78,10 +78,9 @@ class Scheduler {
// ensure that subscribers are in segments
$finder = new SubscribersFinder();
$subscribers = $finder->getSubscribersByList($segments);
$subscribers = Helpers::flattenArray($subscribers);
$subscribers_count = $finder->addSubscribersToTaskFromSegments($queue->task(), $segments);
if(empty($subscribers)) {
if(empty($subscribers_count)) {
return $this->deleteQueueOrUpdateNextRunDate($queue, $newsletter);
}
@@ -91,7 +90,6 @@ class Scheduler {
// queue newsletter for delivery
$queue->newsletter_id = $notification_history->id;
$queue->setSubscribers($subscribers);
$queue->status = null;
$queue->save();
// update notification status
@@ -102,10 +100,8 @@ class Scheduler {
function processScheduledStandardNewsletter($newsletter, $queue) {
$segments = $newsletter->segments()->findArray();
$finder = new SubscribersFinder();
$subscribers = $finder->getSubscribersByList($segments);
$subscribers = Helpers::flattenArray($subscribers);
$subscribers_count = $finder->addSubscribersToTaskFromSegments($queue->task(), $segments);
// update current queue
$queue->setSubscribers($subscribers);
$queue->status = null;
$queue->save();
// update newsletter status