Deactivate inactive subscribers by ID range for performance reasons [MAILPOET-2392]
This commit is contained in:
@@ -4,6 +4,7 @@ namespace MailPoet\Cron\Workers;
|
||||
|
||||
use MailPoet\Cron\CronHelper;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Subscribers\InactiveSubscribersController;
|
||||
|
||||
@@ -43,7 +44,17 @@ class InactiveSubscribers extends SimpleWorker {
|
||||
return true;
|
||||
}
|
||||
// Handle activation/deactivation within interval
|
||||
while ($this->inactive_subscribers_controller->markInactiveSubscribers($days_to_inactive, self::BATCH_SIZE) === self::BATCH_SIZE) {
|
||||
$meta = $task->getMeta();
|
||||
$last_subscriber_id = isset($meta['last_subscriber_id']) ? $meta['last_subscriber_id'] : 0;
|
||||
$max_subscriber_id = isset($meta['max_subscriber_id']) ? $meta['max_subscriber_id'] : (int)Subscriber::max('id');
|
||||
while ($last_subscriber_id <= $max_subscriber_id) {
|
||||
$count = $this->inactive_subscribers_controller->markInactiveSubscribers($days_to_inactive, self::BATCH_SIZE, $last_subscriber_id);
|
||||
if ($count === false) {
|
||||
break;
|
||||
}
|
||||
$last_subscriber_id += self::BATCH_SIZE;
|
||||
$task->meta = ['last_subscriber_id' => $last_subscriber_id];
|
||||
$task->save();
|
||||
CronHelper::enforceExecutionLimit($this->timer);
|
||||
};
|
||||
while ($this->inactive_subscribers_controller->markActiveSubscribers($days_to_inactive, self::BATCH_SIZE) === self::BATCH_SIZE) {
|
||||
|
Reference in New Issue
Block a user