Я пытаюсь создать почтовую программу для моего клиента.Хостинг, который использует мой клиент, имеет очень строгие правила в отношении исходящей почты.Поэтому я должен быть очень осторожен с громкостью и частотой.
Сначала я пытался отправить все электронные письма за один раз (около 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 писем, но не отправляет оставшуюся партию.Где я делаю не так?
РЕДАКТИРОВАТЬ: Использование сторонних сценариев / Framework не вариант (клиент категорически против этого), в противном случае SwiftMailer было идеальным решением.