php & mysql подписаться на поисковые / соответствующие запросы - PullRequest
0 голосов
/ 09 апреля 2009

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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 09 апреля 2009

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

Не имея конкретной информации, вот мои рекомендации:

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

  2. Есть таблица типов подписки

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

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

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

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

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

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

0 голосов
/ 09 апреля 2009

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

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

...