php и mysql подписываются на поисковые/совпадающие запросы
Вопрос
У меня есть сайт недвижимости, который имеет несколько категорий.И я хочу, чтобы пользователи могли подписаться по электронной почте на определенный список предложений, это могут быть предложения из категории...или предложения из списка поиска.
Как мне лучше всего сохранить подписку в MySQL...а также как мне сделать уведомление.
Лучшее, что я придумал, - это сохранить строку MySQL в таблице MySQL с идентификатором пользователя и запустить cron, который принимает все это и выполняет итерацию...запускает cron и при появлении новых объявлений отправляет электронное письмо.
Но я не думаю, что это лучшая идея, поскольку это также означает, что если произойдет изменение в дизайне базы данных (например, имена полей), то все эти запросы станут неверными.
большое спасибо
Решение
В общем, вам нужно сделать свои таблицы максимально гибкими, чтобы учитывать неожиданные изменения.Если эти поля изменятся, ваши запросы все равно придется изменить.
Не вдаваясь в подробности, вот мои рекомендации:
Имейте таблицу пользователей с индексом и электронной почтой.
Иметь таблицу типов подписки
Иметь таблицу поиска идентификатора пользователя и подписки.
Иметь таблицу ожидающих сообщений
При наличии нового обновления соберите все электронные письма и создайте запись журнала сообщений в таблице ожидающих сообщений.
Создайте свой Cron, чтобы каждые несколько минут захватывать 20 неотправленных сообщений и удалять их после отправки.
Причина, по которой я советую итеративно отправлять их через CRON, заключается в том, что по мере роста ваших подписчиков вы не хотите, чтобы сотни писем отправлялись одновременно и связывали ресурсы вашего сервера для очереди почты.Вы можете просто продолжать добавлять сообщения по мере необходимости, и ваша очередь будет постоянно их отправлять.
Мы довольно эффективно использовали этот метод для всех наших приложений массовой рассылки, регистрации ошибок и систем уведомлений с напоминаниями.Возможно, это не лучшее решение, но оно оказалось очень управляемым и гибким.
Другие советы
Если вы измените дизайн базы данных, вам обязательно придется что-то исправлять, так устроен этот мир.
Если по каким-то причинам вам сложно изменить cron
задачу, вы можете создать хранимую процедуру, которая всегда возвращает набор результатов, подходящий для задачи, и вместо этого изменить хранимую процедуру.