Рассылать письма так, чтобы не убить сервер

alexeyco

Новичок
Рассылать письма так, чтобы не убить сервер

Добрый день!

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

Итак, предположим существует форум. Каждый зарегистрированный пользователь может следить за той или иной темой в этом форуме. То есть, зайти в эту тему и жмакнуть ссылку "Следить" - и при добавлении нового ответа в эту тему ему будет отослано письмо с уведомлением и, возможно, текстом добавленного сообщения. И таких подписчиков у темы может быть сколько угодно много.

Возникает такая сложность: в случае роста таких подписчиков сам процесс рассылки становится довольно серьезной нагрузкой - ведь каждое письмо - это (по идее.. если нет - поправьте меня) отдельный коннект к серверу (нельзя же, чтобы пользователи знали, кто еще на эту рассылку подписан, и чтобы они видели имейлы таких же подписчиков). А что если таких пользователей сотня? А если две-три сотни?

Возникает задача - отдать задание по рассылке некоему процессу (предположим, демону... но демоны в пхп не работают), либо отдать этот процесс наоткуп крону. Но крон, как вы понимаете тоже не айс - ведь он может не справиться с задачей своевременно. Представьте, если популярных тем сотня, и если таких подписчиков у каждой темы по нескольку сотен. Как должен впахивать крон, чтобы успеть все всем разослать.

Кто может помочь ссылкой на описание решения подобных проблем?
 

dimagolov

Новичок
рассыка через локальный sendmail или даже на локальный smtp весьма быстро происходит.

а про крон - делай очередь и следи за временем исполнения. только обновляй очередь после каждой отправки.
 

alexeyco

Новичок
dimagolov
Я думал про локальный smtp... в принципе, это наверное выход
 

dimagolov

Новичок
и не ставь в очередь "дубли". то есть если кто-то подписан на тему и там 10 новых сообщений, то шлешь ему только одно письмо, следующее шлешь только после того, как он прочитает тему и там появятся новые нечитанные им сообщения
 
Сверху