Пошаговая отправка электронной почты - PullRequest
0 голосов
/ 27 мая 2011

С программной точки зрения, что было бы простым и понятным способом сократить время отправки массовых писем, избегая при этом времени ожидания PHP?Это делается для того, чтобы связаться с несколькими тысячами участников, принадлежащих сайту.

PS: продумывая условия разделения, вы отправляете на N номеров адресов электронной почты и с помощью сценария как-то вызываете себя.

Ответы [ 3 ]

2 голосов
/ 27 мая 2011

Самый простой способ - просто поспать несколько секунд после каждого x количества отправленных писем:

$count = 0
while (foo) {
    send_email();
    if ($count++ == 100) {
        sleep(10);//sleep for 10 seconds
        $count = 0;
    }
}
1 голос
/ 27 мая 2011

Если вы отправляете всем, кто подписан на сайт, вы можете сделать следующее:

  1. Добавить столбец (если он еще не существует) в пользовательской таблице, что-то вроде 'email_sent'и по умолчанию 1 (для да)
  2. Когда вы выполняете триггер отправки электронной почты, обновите все пользовательские записи, установив флаг' email_sent 'на 0 (для нет).
  3. Установите cronзадание, которое выполняет сценарий PHP (или даже обращается к вашему веб-серверу, используя назначенную страницу для выполнения сценария), которое затем выбирает первых N пользователей, для которых для email_sent установлено значение 0, отправляет им электронные письма и обновляет столбец email_sent для1 для каждого успешного.

Если вы обрабатываете несколько почтовых рассылок, вам нужно будет объединить другую таблицу, в которой сохраняются отношения пользователь: рассылка и статус 'email_sent'.

1 голос
/ 27 мая 2011

Вы всегда можете попробовать команду sleep или вручную расположенные cronjobs, но лучшим вариантом может быть поиск в установленной библиотеке, которая обрабатывает детали для вас: PEAR Mail_Queue

Класс Mail_Queue помещает письма во временный контейнер, ожидая отправки в MTA (агент транспорта почты), и отправляет их позже (например, определенное количество писем каждые несколько минут) с помощью crontab или другим способом.

Есть также много компаний, которые будут обрабатывать все это для вас по цене, если это вариант для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...