[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Рассылка писем
alex12060
Передо мной встала задача создания массовой рассылки писем в блогах.

На сайте сейчас около 40К человек и каждый день прибывает по ~10 человек, думаю, что вскоре будет нихилая нагрузка.

Так вот, если человек подписан на блог, то, при создании записи в блоге, на который он подписан, должно придти уведомление со ссылкой.

В чем задача?

Задача состоит в том, что нужно разослать письмо всем подписчикам.

Есть 2 идеи:

- После отправки в базу новой записи и получения идентификатора новой записи, собрать тело с заголовком, получить всех пользователей и отправить письма в цикле.
Но!
Но будет долгое ожидание ответа от сервера (если посчитать, то сервер может отправлять около 50 писем в секунду, то при 800 подписчиках это около 16 секунд)

Это не гладко, заставлять блоггера так долго ждать.

- Можно составить так называемую задачу - мини рассылку, т.е. типа крона.

Второй вариант более лучше, и выгодней.

Собственно, могут быть и еще варианты, и подводные камни. Есть у кого какие идеи на данный счет? Кто поделится опытом? smile.gif



Спустя 1 час, 4 минуты, 19 секунд (12.03.2012 - 19:54) ADiel написал(а):
libevent, gearman, fork

Спустя 2 часа, 12 минут, 4 секунды (12.03.2012 - 22:07) ADiel написал(а):
Gearman server создает ивент через apache,
на сервере висит воркер, который ждет ивент. Никаких циклов пока ивента нет.
Как только ивент приходит, отправляется письмо.

Для усокрения запускаем несколко копий воркера, они паралельно отрабатывают ивенты без повторейний и потерь.

В случае, если загнутся воркеры (не хватит памяти или еще что), ивенты не пропадут. При повторном запуске воркера, ивенты будут выполняться дальше.

Спустя 1 час, 45 минут, 19 секунд (12.03.2012 - 23:52) inpost написал(а):
Моя рассылка и вправду долгая, 3000-5000 писем = 5-10 минут.
Я повесил на крон, запускаю 1 раз в 1 час.
Не забуть про то, что mail() не годится для массовой рассылки. Если открыть php.net, то там советуют perl

Спустя 2 месяца, 10 дней, 10 часов, 9 минут, 39 секунд (23.05.2012 - 10:02) Li[s]nig написал(а):
Цитата (inpost @ 12.03.2012 - 20:52)
mail() не годится для массовой рассылки.

Привет!

Наткнулся на эту тему, гугля про подводные камни массовых рассылок на php smile.gif

Поясните, пожалуйста, почему mail() не годится для массовой рассылки?

Спасибо заранее!

Спустя 4 минуты, 28 секунд (23.05.2012 - 10:06) Игорь_Vasinsky написал(а):
оо

Спустя 5 минут, 5 секунд (23.05.2012 - 10:11) TMake написал(а):
Цитата (inpost @ 13.03.2012 - 00:52)
Не забуть про то, что mail() не годится для массовой рассылки.

Везде и всюду указывается для любой e-mail рассылки используют mail.
С таким успехом можно организовать рассылку через C++ или Asm.

Спустя 2 минуты, 40 секунд (23.05.2012 - 10:14) Игорь_Vasinsky написал(а):
дело не в том что mail не справится, дело в том что определённый объём рассылки - займёт определённое время, что вполне логично.

Спустя 2 минуты, 35 секунд (23.05.2012 - 10:16) TMake написал(а):
Цитата (Игорь_Vasinsky @ 23.05.2012 - 11:14)
займёт определённое время

это верно, но ни как
Цитата (inpost @ 13.03.2012 - 00:52)
не годится


Спустя 10 минут, 6 секунд (23.05.2012 - 10:26) killer8080 написал(а):
Цитата (inpost @ 12.03.2012 - 23:52)
Не забуть про то, что mail() не годится для массовой рассылки. Если открыть php.net, то там советуют perl

Хм... не нашел в мане подобных рекомендаций blink.gif

Спустя 4 часа, 23 минуты, 33 секунды (23.05.2012 - 14:50) inpost написал(а):
http://php.net/manual/en/function.mail.php
Только не perl, а pear smile.gif я опечатался!

Спустя 10 минут, 50 секунд (23.05.2012 - 15:01) killer8080 написал(а):
inpost
а, точно smile.gif
Цитата
Замечание:

Не следует использовать функцию mail() для отправки большого количества писем в цикле. Функция открывает и закрывает соединение с SMTP-сервером для каждого письма, что не очень эффективно.

Для отправки большого количества сообщений обратите внимание на пакеты » PEAR::Mail и » PEAR::Mail_Queue.

Спустя 1 месяц, 10 дней, 9 часов, 7 минут, 9 секунд (4.07.2012 - 00:08) san4o написал(а):
юзаем таблицу в базе данных куда складываем письма в очереди на отправку и пировский клас для почты. потом по крону дергаем скрипт для рассылки и после отправки удаляем с таблицы отправленные письма.
делать 30к записей я не советую ). на такие обьемы можно, например разбить отправку на несколько частей 20-30 или больше. вообщем крон решает ))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.