Страницы

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

воскресенье, 15 декабря 2019 г.

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

#рассылка #регистрация #email


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


Ответы

Ответ 1



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

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

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