Использование SSE с Laravel без запросов к базе данных - PullRequest
0 голосов
/ 29 января 2019

Я разрабатываю панель мониторинга в режиме реального времени, где хочу уведомлять клиентов о появлении новых данных, чтобы они обновляли панель мониторинга.Поскольку клиенты не отправляют данные на сервер, я подумал, что использовать отправленные сервером события лучше, чем веб-сокеты.

Вот код бэкенда:

   $response->setCallback(
            function() {
                while(true) {
                    echo "retry: 100\n\n";
                    if($this->needRefresh() == 1) {
                        echo "data: 1\n\n";
                        $this->setRefreshFalse();
                    }
                    ob_flush();
                    flush();
                    sleep(3);
                }
            });

Я создалтаблица с одной строкой, где ее значение устанавливается равным true, когда появляются новые данные.Функция $this->needRefresh() попадает в базу данных каждые 3 секунды.Так что, если клиентов много, это будет нагрузка на сервер.Я хочу спросить, есть ли другой способ вызвать SSE без необходимости обращаться к базе данных каждые 3 секунды.

1 Ответ

0 голосов
/ 29 января 2019

В этой ситуации вы можете использовать Redis.структура данных ключевых значений достаточно хороша, чтобы удовлетворить это требование.так как вам нужно избегать дискового ввода-вывода, рассмотрите Redis или Memcache.Redis - это высокопроизводительное хранилище данных в памяти с настраиваемым постоянством.

...