在不查询数据库的情况下将 SSE 与 Laravel 一起使用

Using SSE with Laravel without querying the database

我正在开发一个实时仪表板,我想在有新数据时通知客户,以便他们刷新仪表板。由于客户端不向服务器发送任何数据,我认为使用服务器发送的事件会比使用网络套接字更好。

这是后端代码:

   $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);
                }
            });

我创建了一个只有一行的 table,只要有新数据,它的值就会设置为 true。 $this->needRefresh() 函数每 3 秒访问一次数据库。 所以如果有很多客户端,这将是服务器上的负载。 我想问一下有没有其他方法可以触发SSE而不必每3秒访问一次数据库。

这种情况下,可以使用Redis。键值数据结构足以满足此要求。因为您需要避免磁盘 IO,请考虑 Redis 或 Memcache。 Redis 是一种高性能的内存数据存储,具有可配置的持久性。