php и mysql подписываются на поисковые/совпадающие запросы

StackOverflow https://stackoverflow.com/questions/733408

  •  06-09-2019
  •  | 
  •  

Вопрос

У меня есть сайт недвижимости, который имеет несколько категорий.И я хочу, чтобы пользователи могли подписаться по электронной почте на определенный список предложений, это могут быть предложения из категории...или предложения из списка поиска.

Как мне лучше всего сохранить подписку в MySQL...а также как мне сделать уведомление.

Лучшее, что я придумал, - это сохранить строку MySQL в таблице MySQL с идентификатором пользователя и запустить cron, который принимает все это и выполняет итерацию...запускает cron и при появлении новых объявлений отправляет электронное письмо.

Но я не думаю, что это лучшая идея, поскольку это также означает, что если произойдет изменение в дизайне базы данных (например, имена полей), то все эти запросы станут неверными.

большое спасибо

Это было полезно?

Решение

В общем, вам нужно сделать свои таблицы максимально гибкими, чтобы учитывать неожиданные изменения.Если эти поля изменятся, ваши запросы все равно придется изменить.

Не вдаваясь в подробности, вот мои рекомендации:

  1. Имейте таблицу пользователей с индексом и электронной почтой.

  2. Иметь таблицу типов подписки

  3. Иметь таблицу поиска идентификатора пользователя и подписки.

  4. Иметь таблицу ожидающих сообщений

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

Создайте свой Cron, чтобы каждые несколько минут захватывать 20 неотправленных сообщений и удалять их после отправки.

Причина, по которой я советую итеративно отправлять их через CRON, заключается в том, что по мере роста ваших подписчиков вы не хотите, чтобы сотни писем отправлялись одновременно и связывали ресурсы вашего сервера для очереди почты.Вы можете просто продолжать добавлять сообщения по мере необходимости, и ваша очередь будет постоянно их отправлять.

Мы довольно эффективно использовали этот метод для всех наших приложений массовой рассылки, регистрации ошибок и систем уведомлений с напоминаниями.Возможно, это не лучшее решение, но оно оказалось очень управляемым и гибким.

Другие советы

Если вы измените дизайн базы данных, вам обязательно придется что-то исправлять, так устроен этот мир.

Если по каким-то причинам вам сложно изменить cron задачу, вы можете создать хранимую процедуру, которая всегда возвращает набор результатов, подходящий для задачи, и вместо этого изменить хранимую процедуру.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top