Страницы

Поиск по вопросам

четверг, 25 октября 2018 г.

Рассылка по e-mail в высоконагруженном проекте

Добрый день, задача следующая: Имеется сайт на котором проходит порядка 5 регистраций в секунду. Всем зарегистрировавшимся необходимо отправить сообщение по e-mail с ссылкой подтверждения. В наличии: свой SMTP-сервер, PHP, MySQL Мое виденье данного процесса следующие: Обрабатываем регистрации пользователей, заносим в БД ключ подтверждения, наряду с остальными данными пользователя. Потом раз к примеру в секунд 10 выберем свежеиспечённых юзеров по наличию этого ключа, И рассылаем сообщения по SMTP (по сокету, перечисляя в запросе получателей). При подтверждении ключ затираем, registration is completed! Хотелось бы услышать мнения и рекомендации для оптимизации данного подхода, а так же возможные пути решения задачи.


Ответ

Я обычно делаю три поля: КлючПотверждения, НовыйПароль, БылоЛиПисьмо. Объясняю зачем. Для нового пользователя в поле Пароль ставится "", заполняется НовыйПароль, БылоЛиПисьмо* = 0. Отправлялка делает запрос везде, где БылоЛиПисьмо = 0. И для них сразу делает апдейт БылоЛиПисьмо = 1. После успешной отправки письма, делается БылоЛиПисьмо = 2. Если была ошибка отправки - БылоЛиПисьмо = 3, или письмо вернулось с отлупом БылоЛиПисьмо = 4 (мониторится по РОРу). Эта таблица периодическим кем-то мониторится, чистится. БылоЛиПисьмо == 3 раз в несколько часов отправляется, пока не пройдут сутки с момент регистрации, потом ставится как отлуп. При нажатии ссылки с ключем -> Пароль = НовыйПароль. КлючПотверждения = пусто, НовыйПароль = пусто. При сбросе пароля заполняется НовыйПароль и КлючПотверждения Если в БД Пароль = "*" пишем пользователю, что учетка не активирована.

Комментариев нет:

Отправить комментарий