Всем привет. Делаю сервис "email рассылок" и возникла трудность с хранением данных. Подробнее: Есть главная база подписчиков (хранится в MySQL), туда пользователи добавляются. Необходимо делать массовые рассылки по всей базе, отбирая пользователей, которым нужно отправить (например только мужского пола). Причем отправить можно только 20 писем в 2 минуты. А так же есть автоматические рассылки, где сама программа делает письма по определенным критериям и потом отправляет (например пользователи посмотрел 5 товаров, это записалось в главную базу. Потом программа отправляет 5 писем с этими товарами, одно в час). В чем собственно вопрос: где хранить всю информацию об этих операциях? В первом случае думал при добавлении массовой рассылки - заранее отобрать пользователей из главной базы, а потом ее записать в другое место, что бы при рассылке постоянно не подключаться к MySQL. Во втором случае (автоматические рассылки) нужно где-то хранить какие товары нужно отправить и какие отправлены уже. Если все это делать через mysql то нужно постоянно перезаписывать строки, что бы потом определять кому уже отправлено, и кому нужно отправить. Были идеи использовать сторонние БД на файлах, или вообще использовать обычные файлы PHP. Можете что-нибудь посоветовать?
А не много подключений получится? Только для массовых рассылках нужно будет получить данные, отправить, а потом еще и записать в базу что была отправка. При условии, что update сделан одним запросов - все равно получаем 2 запроса за 2 минуты и так может быть на протяжении дня в зависимости от кол-ва подписчиков. Да и хранить бы хотелось данные: кому отправлено, кому не отправилось и тд. А с автоматической рассылкой еще больше в пару раз, там надо и список товаров вытащить из базы, и список подписчиков кому отправить а потом по каждому записать отдельно в базу, какое письмо ему отправилось.
Хранить в любом случае нужно, где угодно, но нужно. Испугались двух запросов? забавно. Почему лимит 20 писем, а не 25, попадает в спам-лист? Отправляйте письма в ночное время, когда теоретически народу меньше.
Не сказать, что испугался) но если есть возможность сделать компактнее, то почему бы и нет. Так вот к тому и вопрос, непонятно где и как лучше хранить. Не создавать же каждый раз отдельную таблицу в mysql, под каждую массовую рассылку, а их много минимум 5 в неделю, и со временем там все больше и больше данных надо будет писать. Лимит 20 писем связан с квотой на отправку в сервисе рассылок
Есть таблица, где хранится база подписчиков (id,Имя, email) и еще пару полей. Так же есть таблица, где хрянятся данные массовых рассылок, которые добавляются через админку (время отправки,тема письма, ID письма, лимиты для выборки пользователей). Принцип работы такой: Проверяется база рассылок, если скрипт нашел рассылку - запускает поиск по базе подписчиков, что бы найти тех кому отправлять и начинает отправку, 20 штук в 2 минуты. Если использовать mysql, то нужно записывать кому письмо было отправлено, что бы не было повторов. Да и рассылки могут пересекаться между собой. Например две одновременно. Изначально думал использовать какую-нибудь локальную базу на файлах. Привязывать файл к ID рассылки и туда записывать кому отправлено, кому не отправлено и тд. Но не знаю как это реализовать, потому что в дальнейшем база подписчиков может быть и под 100к.
До этого было реализовано все с главной базой. То есть когда пользователю отправлялось письмо, в его строку записывалось ID рассылки, через запятую. Но при ежедневной рассылке так делать не очень.