блокировка повторной оправки одинаковых писем

mcfalu

Новичок
блокировка повторной оправки одинаковых писем

Хочу получить совет как правильно сделать блокировку повторной отправки писем...

Сразу оговорюсь - речь идет НЕ о спам рассылке.
Есть скрипт, вызывая который происходит отправка уведомлений пользователям сайта. Запустили скрипт - определили список кому нужно отправлять и каждому отправили письмо.
При этом если заново запустить данный скрипт, он выполнится повторно и произойдет повторная отправка писем, что не есть хорошо.

Как лучше сделать механизм блокировки повторной отправки одному и тому-же пользователю одного и того-же письма.
Первое что приходит в голову - вести лог отправки, и перед тем как вызывать функцию mail смотреть отправляли недавно указанному пользователю или нет.
 

dimagolov

Новичок
хранишь в базе очередь отправки. перед каждой ставишь время начала отправки. это для проверки на паралельные скрипты, так как скрипт мог умереть в процессе отправки письма, то отбираем к отправке такие, которые еще не отправлялись или начинали отправляться 3-5-10 минут назад. после каждой успешной отправки удаляешь запись из очереди.
 

prolis

Новичок
я бы после каждой успешной отправки обновлял у адресата дату последней отправки, по которому и фильтруется список рассылки.
 

dimagolov

Новичок
prolis, а зачем в очереди рассылки эти данные? чтобы усложнять для СУБД задачу? учти, что это получится смесь очереди с логом, а лог имеет неприятную особенность бесконечно расти. нужен лог - сделай отдельную таблицу и заноси в нее инфу об отправленных письмах.
 

dimagolov

Новичок
nimistar, у тебя в жизни была таблица БД, в которую записи только добавлялись? На несколько сот тысяч записей?
 

Alexandre

PHPПенсионер
я бы для этой цели использовал сервер очередей. Хотя, если проект маленький, то оно этого не стоит.
 
Сверху