Рассылка почты по базе с миллионом пользователей

Димон

Новичок
Рассылка почты по базе с миллионом пользователей

Всем привет!

Для сайта, в котором зарегистрированы больше миллиона юзеров собираюсь делать возможность массовой рассылки (уведомления, новости и т.п.) по базе данных. У юзеров есть id, логин, почта и группа. Id, логин и e-mail юзеров не изменяются. Юзер может принадлежать только к одной группе. Рассылку надо будет делать как всем, так и по выбранной группе.

У меня возникают следующие вопросы:
1) Как максимально быстро делать выборку из базы при рассылке группам? Кеш, думаю, не подходит, т.к. юзеры могут часто блуждать между группами (специфика сайта), соответственно придется часто генерить кеш заново. Есть ли смысл продублировать данные юзеров в отдельных таблицах по группам, т.е. использовать "избыточность данных"?.
2) После того как выборка сделана и данные подготовлены какой почтовик лучше использовать? PHPmailer подойдет для массовой рассылки?

Мне просто не приходилось еще сталкиваться с такими большими системами. Здесь очень важны нюансы быстродействия.
У кого был опыт создания чего-нибудь подобного, поделитесь, плиз.
 

Димон

Новичок
Пхп правит веб-миром :)

-~{}~ 20.08.09 16:06:

Согласен, вопрос, конечно, больше по архитектуре.
 

dimagolov

Новичок
рассылки делают менеджерами рассылок, которые специально под это заточены.
 

Фанат

oncle terrible
Команда форума
при чем здесь архитектура?
рассылкой почты занимается почтовый сервер
 

DeMx

Новичок
Я кроном рассылал как-то. Беру по 50 адресов и шлю. Через пять минут еще.
 

Димон

Новичок
И так, самым узким местом в рассылке является задержка при обращении к почтовому серверу. Значит нужно делать рассылку в несколько потоков. В пыхе можно запустить несколько потоков (эмуляция) через сокеты или pcntl. Под виндой можно через popen(). Но, поискав, нашел готовую тулзу для рассылки, написанную на питоне, работающую под юниксом.

Mailman: http://www.list.org/
 

Alexandre

PHPПенсионер
Спамеров поощряете?
но почему сразу спамеров, у меня был проект: уведомление пользователей о новостях сайта... расслылка по полутору миллионов пользователей... Рассылал с помощью простого PHPMailer по 500 писем по крону, но как заметили выше - надо использовать для этих целей спец рассылочные сервера.
 

The employer

Новичок
На e-xecutive.ru в свое время была ежедневная рассылка на сто тысяч адресов. Через почтовик на датафорте она вся уходила за полтора-два часа.

Так что ставь несколько почтовиков (можно на разных площадках), группируй юзеров по доменному имени почтового сервера (у нас из ста тысяч человек - пятнадцать тысяч были на mail.ru), и вперед.

Готовься, кстати, к тому, что твои почтовики, при всех подписаных юзерами соглашениях на получение рассылки, все равно будут попадать периодически в спам-листы.
 

Alexandre

PHPПенсионер
Готовься, кстати, к тому, что твои почтовики, при всех подписаных юзерами соглашениях на получение рассылки, все равно будут попадать периодически в спам-листы.
да, надо такие вещи согласовать заранее с крупными почтовиками, чтоб не попасть в банлист. Было такое :(
у нас одна итерация рассылки шла часа полтора. Рассылалось все с одного специального для рассылки почтовика.
 

magiq

Новичок
Каким образом кроном можно отправлять письма, по частям из всей базы, скажем 100 писем, нужно отправлять по 10. Напротив каждого email'а ставить дату последней рассылки?
 

whirlwind

TDD infected, paranoid
О чем тут разговор? Все очень зависит от принимающего smtp сервера. Я например всегда проставляю лимит подключений 1/5 минут. Затачиваешь локальный релей и юзаешь mail - все остальное проблемы сисадмина. Если ближайший серв не справится, то удаленный тоже врядли.
 

magiq

Новичок
Вы не поняли вопрос, как можно сделать так, чтобы первый раз рассылалось первые 10 писем, затем вторые 10 писем и т.д. Сразу 100 писем отсылать не хочется, потому что время работы скрипта слишком большое будет

-~{}~ 06.12.09 02:01:

И еще вопрос, где взять такой smtp сервер, который не будет блокировать ваш аккаунт из-за большой рассылки
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
magiq
учи программирование или найми прфессионала,
твои вопросы не из PHP, а логика уровня лабораторной ВУЗа
 

e2site

Новичок
Автор оригинала: magiq
Вы не поняли вопрос, как можно сделать так, чтобы первый раз рассылалось первые 10 писем, затем вторые 10 писем и т.д. Сразу 100 писем отсылать не хочется, потому что время работы скрипта слишком большое будет
пишешь php скрипт который рассылает по N писем, а потом запускаешь через cron раз в пять минут

Автор оригинала: magiq
И еще вопрос, где взять такой smtp сервер, который не будет блокировать ваш аккаунт из-за большой рассылки
Нужно скорее всего сообщить провайдеру(или хостеру) о такой рассылке..
 
Сверху