[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Алгоритм умной рассылки
panacea
Из-за ограничения хостера - не более 100 писем в час. Как грамотно организовать цикл с задержкой отправки. У меня тело письма зависит от подписчика.
Надо придумать алгоритм умной рассылки.



Спустя 2 часа, 49 минут, 34 секунды (14.04.2011 - 18:31) Snus написал(а):
panacea
Таблица в БД + cron каждый час

Спустя 45 минут, 22 секунды (14.04.2011 - 19:17) panacea написал(а):
Думаю как это реализовать. Какую БД строить?
Допустим

5 чел подписаны на тему 1
14 чел на тему 2
3 чела на тему 3
130 чел на тему 4
и т.д.
Ограничение 100 писем в час.
Для каждой темы надо собрать письмо и отправить. При этом меняем статус у юзеров об операции. Как менять статус? сразу у темы или у каждого юзера?

Подписчиков на тему больше 100 чел. Что делаем?

Мы оправляем 99 писем, отсчитываем счетчиком количество и die прогу. Через час приходим и снова селектим всех со статусом ожидания. Тогда статус надо менять у каждого юзера. Это фукусима для сервака тогда будет.

ЗАПАРА.

Спустя 8 минут, 12 секунд (14.04.2011 - 19:25) Snus написал(а):
Я уже где-то на форуме писал схему.
Попытаюсь воссоздать:

Создаем таблицу в БД 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).")
Быстрый ответ:

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