@vyrtime
хороший

Как лучше обновлять данные из MySQL на сайте в режиме реального времени?

Добрый день!

Делаю аукцион. Пишу на yii2 (но не суть важно). Необходимо на странице отображать 5 последних ставок из базы данных в режиме реального времени. Т.е. не реже раза в секунду получать данные.
Есть старый давно проверенный следующий вариант: раз в секунду осуществлять ajax-запрос к серверу, который извлекает 5 последних записей из таблицы.

Возможно сейчас существует более лучший современный вариант, нежели "долбить" сервер ajax-запросами?

Есть есть, то было бы здорово показать пример.
  • Вопрос задан
  • 2531 просмотр
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Да есть такой метод, называется сокеты
Вот статейка на тему yii и сокетов:
http://satirics.net/wp/2015/09/22/создание-websock...
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Как написали - сокеты, и есть вариант с лонг поллинг, например тут и здесь, причем я бы больше на комменты в первой статье смотрел.
Ответ написан
Комментировать
sashkets
@sashkets
Прекратил отвечать после 24.02.2022
через промежуточную БД memcache или redis (redis может синкать еще и на диск), и раз в 5 минут синкать redis/memecahe с mysql
Ответ написан
Комментировать
Нужны вебсокеты. Создаете по одному каналу для каждого лота, либо один канал для всех лотов - как вам удобнее. Клиенты подписываются на каналы, далее когда кто-то делает ставку, она обрабатывается на сервере, вносится в БД после чего данные об этой ставке отправляются сервером в канал и все подписчики получают это обновление. Ежесекундно отправлять данные не нужно - это излишняя нагрузка, только при появлении новой ставки. Для вебсокетов я лично рекомендовал бы centrifugo, она очень мало ресурсов потребляет и быстро работает. Примера кода на yii не будет - не работал с ним.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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