Как организовать оповещение пользователей?

Доброго времени суток, друзья. Есть сайт по погоде, посетители подписываются на погоду в своём регионе и наблюдают за ней. Я хочу сделать возможность оповещать: на сайте / на почту / в телеграм об изменениях, которые создаст сам пользователь. То есть, если опустилась температура ниже 0 градусов -> отправить уведомление на тот источник, который выбрал сам пользователь.
Я не понимаю как мне это всё организовать с помощью PHP и/или JS.

Мысли такие: Есть таблица в БД с оповещениями, когда пользователь создаёт для себя оповещение, создаётся запись с данными по параметрам. А как правильно потом проходить по всем этим оповещениям пользователей и сверять актуальные данные ? Необходимо в момент получения актуальных данных по погоде проверять пользовательские оповещения ? Или Как сейчас такое организовывают в 2к22 ?
Если допустим таких пользовательских записей тысячи в день?

Спрашиваю, чтобы изначально начать писать правильно и правильно распределить нагрузку. Спасибо за ваши мысли и идеи!
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Во-первых, надо выбросить из головы эту дурь, "хачу изначально писать правильно".
Изначально надо написать хоть что-то.
Ни один сайт в мире не писался "изначально правильно". Сначала пишут рабочий прототип, чтобы хотя бы самому понять, что ты делаешь.
Это принципиальный момент. Варианта тут только два - либо ты делаешь минимальный вариант доступными средствами и потом его развиваешь, либо сидишь на диване и рассуждаешь о самых модных веяниях и в итоге не получаешь ничего. Особенно если даже минимальный вариант реализации для тебя темный лес и загадка века.

И делать не 100500 способов оповещения, а один.
То есть сделать таблицу подписки, в которой указано - на какое событие подписался юзер, и его айди.

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

Одно это уже займёт вас на пару месяцев.

И только после того как это сделано, после того как заработает хоть что-то, можно начинать думать в сторону других способов. Но опять же, не всех скопом, а по одному. Сделали рассылку в телеграм? Поехали с оповещениями в браузер.

То же самое касается способа рассылки.
Только после того как рассылка начинает занимать ощутимое время - и, разумеется, после того как она вообще была сделана - только после этого можно задуматься о сервере очередей, о том что по наступлению события добавляются только задания в очередь, а сами рассылки делают несколько отдельных сервисов и воркеров. И всё это, разумеется, только если проект не загнется раньше/у автора не пропадёт интерес/у него же хватит способностей осилить всю эту премудрость
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Tomio
@Tomio
backend developer (python, php)
Это довольно просто можно реализовать через событийную систему. Посмотрите в сторону паттерна "Наблюдатель (Observer)". У вас будут подписчики на события (сервис уведомления по email, сервис уведомления в telegram и пр.), и когда наступит то или иное событие (в вашем случае, когда погода опустится ниже нуля) вам всего лишь нужно будет оповестить свои сервисы-подписчики и они уже оповестят пользователей.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы