Php 每当更新数据库时,socket.io推送数据
我正在编写一个websocket应用程序,每当数据库条目发生变化时,它都应该将数据推送到我的php文件中。现在,作为一个非常基本的开始,我设置了一个间隔计时器,并每20秒向客户机推送一次,无论是否有更改(字段仅用于播放--password…): 服务器端:Php 每当更新数据库时,socket.io推送数据,php,mysql,node.js,socket.io,Php,Mysql,Node.js,Socket.io,我正在编写一个websocket应用程序,每当数据库条目发生变化时,它都应该将数据推送到我的php文件中。现在,作为一个非常基本的开始,我设置了一个间隔计时器,并每20秒向客户机推送一次,无论是否有更改(字段仅用于播放--password…): 服务器端: setInterval(pushData, 20000); function pushData() { connection.query('SELECT * FROM testtable WHERE username="michae
setInterval(pushData, 20000);
function pushData() {
connection.query('SELECT * FROM testtable WHERE username="michael"', function(err,rows,fields) {
if (err) throw err;
io.emit('newdata', rows[0].password);
});
}
客户端PHP脚本:
socket.on('newdata', function(msg) {
var data = document.getElementById('dataentries');
data.innerHTML = msg;
});
只有在数据库条目发生更改时才进行查询和更新的最佳实践方法是什么?我可以设置从mysql到node.js的触发器吗?最简单也是合法的方法是,首先查询数据,检查它们是否已更改,然后进行更改并向客户端发送消息。如果没有更改,请不要进行更新 假设您在服务器应用程序中使用
ORM
,我会将广播逻辑放入POST\u SAVE
钩子中
如果您不拥有该应用程序,但可以访问数据库配置,那么技巧如下
我也是这么想的。但我仍然必须每隔20秒左右查询数据库。难道没有一种方法可以消除许多查询吗?当涉及到生产时,我必须查询一个包含20000个条目的数据库。添加一些好的索引,那么20k行就不是问题了。有了好的索引,您可以在短时间内查询数百万行。查看mysql文档,了解如何向列添加索引。基本上,它只是mysql对表进行排序的一个帮助,因此它可以更快地检索您搜索的行。