@luxurypluxury

Как лучше сделать обновление данных строго по времени?

Задача состоит в том что нужно в начале каждого часа обновлять данные на сайте. Не просто обновлять запросом, а через сокет. Но как сделать строго в начале каждого часа. Только допустим 09:00 наступило и пошло обновление.
  • Вопрос задан
  • 203 просмотра
Решения вопроса 3
ThunderCat
@ThunderCat Куратор тега Веб-разработка
{PHP, MySql, HTML, JS, CSS} developer
Задача состоит в том что нужно в начале каждого часа обновлять данные на сайте.
Не понятно, данные на сайте, или у клиента данные с сайта?
Если первое - зачем тут вообще сокет и при чем тут вообще клиент?
Если второе - крон + скрипт рассылки в открытые сокеты
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Веб-разработка
Относительно простое решение такое:
  • У вас есть какой-то сервер сокетов, который постоянно запущен и поддерживает соединения с клиентами.
  • У вас есть какой-то сервер очередей.
  • Сервер сокетов слушает сервер очередей и, при получении нужных данных, рассылает их клиентам.
  • По крону срабатывает скрипт, который кладёт данные в очередь.
Ответ написан
Комментировать
Я всегда советую сначала попробовать самое простое решение в таких случаях.
А именно, есть проект Mercure Hub https://mercure.rocks/docs/getting-started

Это сервис, устанавливаемый куда-то к себе на сервер, который умеет принимать обычный http запрос откуда-то с бэкенда или из другого места, данные из которого сразу перенаправлять подключенным к нему браузерам через SSE (Server Sent Events). Подключиться к нему из JavaScript через EventSource - это три строчки кода.

Вот небольшое знакомство с этим:
https://youtu.be/DzHvscVacj0?si=BzdhFA4q0rqUU7D5

https://youtu.be/kYNC47V7R_0?si=VCn1AEsqIa5AFddU

Ну и далее на сервере настраиваем cron, чтобы он каждый час запускал какой-то скрипт, который и будет осуществлять этот самый http-запрос с нужными данными в Mercure Hub, а тот его отправит в браузеры клиентов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы