Adds filter to set custom batch processing size
This commit is contained in:
@ -6,11 +6,11 @@ use MailPoet\Cron\Workers\SendingQueue\Tasks\Links;
|
|||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
||||||
use MailPoet\Mailer\MailerLog;
|
use MailPoet\Mailer\MailerLog;
|
||||||
use MailPoet\Models\Newsletter as NewsletterModel;
|
|
||||||
use MailPoet\Models\SendingQueue as SendingQueueModel;
|
use MailPoet\Models\SendingQueue as SendingQueueModel;
|
||||||
use MailPoet\Models\StatisticsNewsletters as StatisticsNewslettersModel;
|
use MailPoet\Models\StatisticsNewsletters as StatisticsNewslettersModel;
|
||||||
use MailPoet\Models\Subscriber as SubscriberModel;
|
use MailPoet\Models\Subscriber as SubscriberModel;
|
||||||
use MailPoet\Segments\SubscribersFinder;
|
use MailPoet\Segments\SubscribersFinder;
|
||||||
|
use MailPoet\WP\Hooks as WPHooks;
|
||||||
|
|
||||||
if(!defined('ABSPATH')) exit;
|
if(!defined('ABSPATH')) exit;
|
||||||
|
|
||||||
@ -24,6 +24,7 @@ class SendingQueue {
|
|||||||
$this->mailer_task = ($mailer_task) ? $mailer_task : new MailerTask();
|
$this->mailer_task = ($mailer_task) ? $mailer_task : new MailerTask();
|
||||||
$this->newsletter_task = ($newsletter_task) ? $newsletter_task : new NewsletterTask();
|
$this->newsletter_task = ($newsletter_task) ? $newsletter_task : new NewsletterTask();
|
||||||
$this->timer = ($timer) ? $timer : microtime(true);
|
$this->timer = ($timer) ? $timer : microtime(true);
|
||||||
|
$this->batch_size = WPHooks::applyFilters('mailpoet_cron_worker_sending_queue_bach_size', self::BATCH_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
function process() {
|
function process() {
|
||||||
@ -47,7 +48,7 @@ class SendingQueue {
|
|||||||
$queue->subscribers = $queue->getSubscribers();
|
$queue->subscribers = $queue->getSubscribers();
|
||||||
$subscriber_batches = array_chunk(
|
$subscriber_batches = array_chunk(
|
||||||
$queue->subscribers['to_process'],
|
$queue->subscribers['to_process'],
|
||||||
self::BATCH_SIZE
|
$this->batch_size
|
||||||
);
|
);
|
||||||
foreach($subscriber_batches as $subscribers_to_process_ids) {
|
foreach($subscriber_batches as $subscribers_to_process_ids) {
|
||||||
if(!empty($newsletter_segments_ids[0])) {
|
if(!empty($newsletter_segments_ids[0])) {
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace MailPoet\Test\Cron\Workers\SendingQueue;
|
namespace MailPoet\Test\Cron\Workers\SendingQueue;
|
||||||
|
|
||||||
use AspectMock\Test as Mock;
|
use AspectMock\Test as Mock;
|
||||||
@ -24,6 +25,7 @@ use MailPoet\Newsletter\Links\Links;
|
|||||||
use MailPoet\Router\Endpoints\Track;
|
use MailPoet\Router\Endpoints\Track;
|
||||||
use MailPoet\Router\Router;
|
use MailPoet\Router\Router;
|
||||||
use MailPoet\Subscription\Url;
|
use MailPoet\Subscription\Url;
|
||||||
|
use MailPoet\WP\Hooks;
|
||||||
|
|
||||||
class SendingQueueTest extends \MailPoetTest {
|
class SendingQueueTest extends \MailPoetTest {
|
||||||
function _before() {
|
function _before() {
|
||||||
@ -93,6 +95,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function testItConstructs() {
|
function testItConstructs() {
|
||||||
|
expect($this->sending_queue_worker->batch_size)->equals(SendingQueueWorker::BATCH_SIZE);
|
||||||
expect($this->sending_queue_worker->mailer_task instanceof MailerTask);
|
expect($this->sending_queue_worker->mailer_task instanceof MailerTask);
|
||||||
expect($this->sending_queue_worker->newsletter_task instanceof NewsletterTask);
|
expect($this->sending_queue_worker->newsletter_task instanceof NewsletterTask);
|
||||||
expect(strlen($this->sending_queue_worker->timer))->greaterOrEquals(5);
|
expect(strlen($this->sending_queue_worker->timer))->greaterOrEquals(5);
|
||||||
@ -458,9 +461,11 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
$sending_queue_worker = $this->sending_queue_worker;
|
$sending_queue_worker = $this->sending_queue_worker;
|
||||||
$sending_queue_worker->mailer_task = Stub::make(
|
$sending_queue_worker->mailer_task = Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
array('send' => Stub::exactly(1, function() {
|
array(
|
||||||
|
'send' => Stub::exactly(1, function() {
|
||||||
return true;
|
return true;
|
||||||
})),
|
})
|
||||||
|
),
|
||||||
$this
|
$this
|
||||||
);
|
);
|
||||||
$sending_queue_worker->process();
|
$sending_queue_worker->process();
|
||||||
@ -613,6 +618,17 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testItAllowsSettingCustomBatchSize() {
|
||||||
|
$custom_batch_size_value = 10;
|
||||||
|
$filter = function() use ($custom_batch_size_value) {
|
||||||
|
return $custom_batch_size_value;
|
||||||
|
};
|
||||||
|
Hooks::addFilter('mailpoet_cron_worker_sending_queue_bach_size', $filter);
|
||||||
|
$sending_queue_worker = new SendingQueueWorker();
|
||||||
|
expect($sending_queue_worker->batch_size)->equals($custom_batch_size_value);
|
||||||
|
Hooks::addFilter('mailpoet_cron_worker_sending_queue_bach_size', $filter);
|
||||||
|
}
|
||||||
|
|
||||||
function _after() {
|
function _after() {
|
||||||
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||||
\ORM::raw_execute('TRUNCATE ' . SubscriberSegment::$_table);
|
\ORM::raw_execute('TRUNCATE ' . SubscriberSegment::$_table);
|
||||||
|
Reference in New Issue
Block a user