Отправка писем в пакетном режиме с использованием phpmailer с set_time_limit и sleep

Я пытаюсь создать программу рассылки подписчиков для моего клиента. Хостинг, который использует мой клиент, имеет очень строгие правила в отношении исходящей почты. Поэтому я должен быть очень осторожен с громкостью и частотой.

Сначала я пытался отправить все электронные письма за один раз (около 500 подписчиков), но это приводило к ошибке времени ожидания, так как письма не отправлялись. То, что я пытаюсь сделать, это отправить 50 писем, подождать час и снова отправить 50 писем, повторять процесс до тех пор, пока все письма не будут отправлены. Мой код работает только для первого лота. Я понятия не имею, как уснуть процесс и разбудить его через 1 час.

Я искал Google и SO для помощи, но ни у одного из них, кажется, нет решения для этой конкретной модели. Вот мой код

function process_mails() {

set_time_limit(0);

$i=0;
foreach ( $mails as $mail ) {
$i++;

// My mailer code here. Removed it for simplicity

if ($i > 0 && $i % 50 == 0) {
sleep(3600);
}
}

}

Проблема в том, что этот код правильно отправляет первые 50 писем, но не отправляет оставшуюся партию. Где я делаю не так?

РЕДАКТИРОВАТЬ: Использование сторонних скриптов / фреймворка не вариант (клиент категорически против), в противном случае SwiftMailer было идеальным решением.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]