Надо придумать алгоритм умной рассылки.
Спустя 2 часа, 49 минут, 34 секунды (14.04.2011 - 18:31) Snus написал(а):
panacea
Таблица в БД + cron каждый час
Таблица в БД + cron каждый час
Спустя 45 минут, 22 секунды (14.04.2011 - 19:17) panacea написал(а):
Думаю как это реализовать. Какую БД строить?
Допустим
5 чел подписаны на тему 1
14 чел на тему 2
3 чела на тему 3
130 чел на тему 4
и т.д.
Ограничение 100 писем в час.
Для каждой темы надо собрать письмо и отправить. При этом меняем статус у юзеров об операции. Как менять статус? сразу у темы или у каждого юзера?
Подписчиков на тему больше 100 чел. Что делаем?
Мы оправляем 99 писем, отсчитываем счетчиком количество и die прогу. Через час приходим и снова селектим всех со статусом ожидания. Тогда статус надо менять у каждого юзера. Это фукусима для сервака тогда будет.
ЗАПАРА.
Допустим
5 чел подписаны на тему 1
14 чел на тему 2
3 чела на тему 3
130 чел на тему 4
и т.д.
Ограничение 100 писем в час.
Для каждой темы надо собрать письмо и отправить. При этом меняем статус у юзеров об операции. Как менять статус? сразу у темы или у каждого юзера?
Подписчиков на тему больше 100 чел. Что делаем?
Мы оправляем 99 писем, отсчитываем счетчиком количество и die прогу. Через час приходим и снова селектим всех со статусом ожидания. Тогда статус надо менять у каждого юзера. Это фукусима для сервака тогда будет.
ЗАПАРА.
Спустя 8 минут, 12 секунд (14.04.2011 - 19:25) Snus написал(а):
Я уже где-то на форуме писал схему.
Попытаюсь воссоздать:
Создаем таблицу в БД email_cron :
Добавляем письмеца:
Запускаем кроном скрипт каждый час:
Отсылаем письмеца и удаляем их
Либо ставь флаг, что якобы удалено
Либо одним запросом
Попытаюсь воссоздать:
Создаем таблицу в БД email_cron :
id | email | title | text | del
Добавляем письмеца:
INSERT INTO `email_cron` (`email`,`title`,`text`) VALUES ('vasya@pupkin.com','Тестовое письмо','Я решил задолбать вас тестовыми письмами')
Запускаем кроном скрипт каждый час:
SELECT *
FROM `email_cron`
WHERE `del` = '0'
ORDER BY `id`
LIMIT 100
Отсылаем письмеца и удаляем их
DELETE FROM `email_cron` WHERE `id` = '".(int)$id."'
Либо ставь флаг, что якобы удалено
UPDATE `email_cron` SET `del` = '1' WHERE `id` = '".(int)$id."'
Либо одним запросом
UPDATE `email_cron` SET `del` = '1' WHERE `id` IN (".implode(',', $ids).")