Форум → Программирование → PHP для идиотов → Рассылка писем подписчикам сайта
Рассылка писем подписчикам сайта
Страницы: ← Следующая страница →
-
Вобщем, сайт маленький, можно чисто под него рассылку за 20 минут.
Но нам же всегда хочется подойти с глобальной точки зрения к вопросу, правильно? :)
Дано и что нужно:
1. База подписчиков (e-mail, раздел на который он подписан)
2. Раз в неделю, в понедiлок, надо рассылать каждому клиенту тот контент, на который он подписался
Предположим у нас мильён подписчиков.
Как лучше сделать?
Как я представляю:
1. В таблице с юзерами мы делаем поле last_mailin_date, в которую кладём дату при отправке ему письма, следовательно, мы будем выбирать для рассылке тех юзеров, у кого last_mailin_date < NOW().
2. Мы смотрим, на какой раздел сайта он подписан и вызываем обработчик, который отвечает за рассылаемый контент по этому разделу.
3. Он смотрит, не кэшанули-ли мы уже то, что нам надо разослать. Если есть кэш — он его отдает, если нету — он тащит контент с базы, отдает + кеширует в файл для следующего пациента.
4. Всё это дело мы ставим на крон.
Вопросы:
1. Какой интервал надо ставить для запуска этих заданий?
2. Когда понять, что нужно остановиться и как остановиться?
3. Что, если не хватит времени, чтобы разослать всем?все умрут, а я изумруд -
17 января 2009 г. 12:21, спустя 8 минут 6 секунд
md5, такие вещи всегда делаются порциями. есть поле у подписчика или таблица связей один ко многим sent_jobs - jobid,recepientid,time. и таблицы емайлжобс + емайлресепиентс + твоя всякаю кухня про разделы сайтов. ест ьскрипт крона, который раз в минуту заходит в жобс, видит что есть незаконченые жобы, потом извлекает 50 ресепиентов, которые не нашлись в таблице связи, добавляет в эту табллицу и шелт им письма. на этом проход заканчивается, система ждет следующего запуска :)
плюсы такой реализации -
можно отменить рассылку из панельки.
можно следить что когда кому и тп
не надо ебаться с set_time_limit + kill
самый большой плюс - то что я его предложил :)
не за что, мд6 :)Сапожник без сапог -
17 января 2009 г. 12:22, спустя 38 секунд
мой метод не имеет этих ограниченийВопросы:
1. Какой интервал надо ставить для запуска этих заданий?
2. Когда понять, что нужно остановиться и как остановиться?
3. Что, если не хватит времени, чтобы разослать всем?Сапожник без сапог -
17 января 2009 г. 12:34, спустя 11 минут 53 секунды
т.е. другими словами, нужен скрипт, который будет, допустим, каждые 2 минуты смотреть, не появились ли задания для рассыльщика
а дргой скрипт, должен будет добавить эти задания, когда мне надо..все умрут, а я изумруд -
17 января 2009 г. 12:35, спустя 1 минуту 16 секунд
другими словами да. ну я люблю все с интерфейсом. плейн пхп + пхпмайадмин - пиздец метод.
т.е. другими словами, нужен скрипт, который будет, допустим, каждые 2 минуты смотреть, не появились ли задания для рассыльщика
а дргой скрипт, должен будет добавить эти задания, когда мне надо..Сапожник без сапог -
17 января 2009 г. 12:36, спустя 26 секунд
я бы тебе показал свою систему рассылки спама, да … моральные устои мне не позволяют сделать этого …Сапожник без сапог -
17 января 2009 г. 12:36, спустя 31 секунду
получаем
jobs:
user_id | job
job - указывает, что мы рассылаем, какой контент
разослали — удалили задание, принялись за следующеевсе умрут, а я изумруд -
17 января 2009 г. 12:37, спустя 1 минуту 19 секунд
мож статью оформим с конкретными примерами?все умрут, а я изумруд -
17 января 2009 г. 12:39, спустя 1 минуту 34 секунды
зачем удалять? а еси потом начальник скажет: "ГДЕ БЛЯ???????????"
получаем
jobs:
user_id | job
job - указывает, что мы рассылаем, какой контент
разослали — удалили задание, принялись за следующееСапожник без сапог -
17 января 2009 г. 12:40, спустя 1 минуту 17 секунд
я бы написал, да просто идеи, без примеров както хуево, а потратить 4 часа на составление таблиц, написание кусков кода … пока некогда чутка)
получаем
jobs:
user_id | job
job - указывает, что мы рассылаем, какой контент
разослали — удалили задание, принялись за следующее
вот когда Ты доделаешь эту систему, я так понял что она тебе и правда нужна, то можно было бы написать, чтобы было где брать куски кода и скриншоты таблиц бд :)Сапожник без сапог -
17 января 2009 г. 12:47, спустя 7 минут 4 секунды
на самом деле она мне сейчас не нужна ) я щас за 20 минут набросаю быструю рассылку для малого кол-ва людей ибо наплыв народу не планируется)
я бы написал, да просто идеи, без примеров както хуево, а потратить 4 часа на составление таблиц, написание кусков кода … пока некогда чутка)
получаем
jobs:
user_id | job
job - указывает, что мы рассылаем, какой контент
разослали — удалили задание, принялись за следующее
вот когда Ты доделаешь эту систему, я так понял что она тебе и правда нужна, то можно было бы написать, чтобы было где брать куски кода и скриншоты таблиц бд :)
а тема интересна не только мне, но и многим, поэтому надо оформить нормально
а что?
зачем удалять? а еси потом начальник скажет: "ГДЕ БЛЯ???????????"
получаем
jobs:
user_id | job
job - указывает, что мы рассылаем, какой контент
разослали — удалили задание, принялись за следующее
помечать как выполненное?
ещё раз по структуре
есть табица jobs, там мы храним задания в форматеid | job_name
есть таблица с подписчиками users, там юзеры в форматеid | email | content_type
, где content_type — контент, который он выбрал
есть таблица отношений, "задание по рассылке — юзер" emails-jobs в форматеid | job_id | user_id | date
, т.е. ид задания, кому отправили и когда
1. Мы добавляем задание1 | Разослать новости за последнюю неделю
Что делаем дальше?все умрут, а я изумруд -
17 января 2009 г. 12:55, спустя 8 минут 4 секунды
а что?
помечать как выполненное?
да + сделать страницы истории - кто получил когда получил и где получил "**зды:)"id | job_name
+ статус колонка, чтобы писать отмененое, выполненое и тп. + желательно дата старта выполнения и дата конца выполнения задания, но их можно брать джойном из таблиц связей, думаю что из таблиц даже правильнее :)есть таблица с подписчиками users, там юзеры в формате
в принципе верно
Цитата:
id | email | content_type
, где content_type — контент, который он выбрал
есть таблица отношений, "задание по рассылке — юзер" emails-jobs в формате
Цитата:
id | job_id | user_id | date
, т.е. ид задания, кому отправили и когда
да. + можно еще размер письма или тп, заголовки какие нить. зависит от реализации, бывает надо я думаю :) О! КАТЕГОРИЮ контента туда же вбивать или тп)
Что делаем дальше?
пишем по сути то :)
дальше делаем ебически заебавшую формочку на сайте "подписаться что я пидор + оставить емайл" ну и категорию контента там выбор если надо. насяльника скзаал всем людям которые читают ленту "для идиотов" разослать письмо такое то. ты добавляешь это письмо в задания + надо поле emailmessage + emailsubject. желательно иметь возможность вписывать шаблоны - Привет, Александр Игоревич = Привет, {firstname} {surname} …
ну и крон планировщик все время работающий видит что появилось задание со статусом active, берет пачк людей как я уже написал подставляет их имена в письма и шлет письма + записывает кому и чего. когда видит что нет больше получателей, а жоб - актив - ставит дане статус. вроде бы все просто :)Сапожник без сапог -
17 января 2009 г. 13:01, спустя 5 минут 51 секунду
да, ясно
если я все таки решусь это сделать на одном своем сайте (что врядли, конечно), то быть факу в скором времени с иллюстрациями и примерами
а если нет, то немного позже…все умрут, а я изумруд -
17 января 2009 г. 13:11, спустя 10 минут 10 секунд
да, ясно
если я все таки решусь это сделать на одном своем сайте (что врядли, конечно), то быть факу в скором времени с иллюстрациями и примерами
а если нет, то намного позже…Сапожник без сапог -
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!