Я разрабатываю панель мониторинга в режиме реального времени, где хочу уведомлять клиентов о появлении новых данных, чтобы они обновляли панель мониторинга.Поскольку клиенты не отправляют данные на сервер, я подумал, что использовать отправленные сервером события лучше, чем веб-сокеты.
Вот код бэкенда:
$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 секунды.