在具有外部DB连接的PHP websocket中,性能是如何工作的?
上下文。我一边有一个web服务器,另一边有另一个IP服务器上的数据库(BD)。我用这个库构建了一个PHP websocket(WS)。其思想是,浏览器根据数据库中的现有数据逐秒显示更新的信息。我配置了WS,以便客户端(通过JS)每秒向服务器发送一条消息,以便从DB检索最新数据并在浏览器中显示:在具有外部DB连接的PHP websocket中,性能是如何工作的?,php,websocket,pdo,Php,Websocket,Pdo,上下文。我一边有一个web服务器,另一边有另一个IP服务器上的数据库(BD)。我用这个库构建了一个PHP websocket(WS)。其思想是,浏览器根据数据库中的现有数据逐秒显示更新的信息。我配置了WS,以便客户端(通过JS)每秒向服务器发送一条消息,以便从DB检索最新数据并在浏览器中显示: let conn = new WebSocket("ws://localhost:8080/"); conn.onopen = function (e) { setInterv
let conn = new WebSocket("ws://localhost:8080/");
conn.onopen = function (e) {
setInterval(function() {
conn.send('myrequest');
}, 1000);
};
在本地开发模式下,一切都能完美运行。但我怀疑我做得不好,在生产中,这将是性能方面的一场灾难,仅仅因为以下几点
问题。我将DB连接放在构造函数中,并放在onOpen()方法中,通过该方法,我实现了在WS的生命周期中有一个到DB的连接。那很好。问题在于,在onMessage()事件中,我向外部数据库发出请求:
$stmt = $this->pdo->prepare('SELECT ...');
if ($stmt->execute()) {
if($stmt->rowCount()>0) {
// ...
}
}
$stmt->closeCursor();
我从未摆脱对DB的多个请求:$stmt->execute()
,就像DB在另一台服务器上一样,这让我假设当web服务器在一边而DB服务器在另一边时,websocket非常无用,是吗?如果是这样的话,在这里不影响性能的最佳方式是什么
欢迎任何评论