gpt4 book ai didi

mysql - 有没有更好的方法在不使用 setInterval() 函数的情况下监听 Node JS 中的表更改

转载 作者:行者123 更新时间:2023-11-28 23:24:17 25 4
gpt4 key购买 nike

我正在学习 Node JSCodeigniter 的集成。该过程运行完美。

当数据库(MySql)发生一些变化时,我会显示一些实时通知

现在我正在使用时间为 5 秒的 setInterval() 函数。这将每 5 秒调用一次数据库查询。

没有 setInterval() 功能,是否有更好的方法来监听数据库变化?

我的代码示例是

io.on('connection', function(socket){
setInterval(check_new_notification, 5000);
});

socket.on('check_new_notification', function(user,time){
check_new_notification(user,time);
});

function check_new_notification(user,time){
if(user == '' || typeof user == 'undefined' || user == null){
user = user_id;
}
if(time == '' || typeof time == 'undefined'){
time=0;
}
if(user != '' && typeof user != 'undefined' && user != null){
db.getDetails(user,time,mysql,pool,function(error,result,row_count){
io.emit('trigger_alert',result, row_count);
});
}
}

请告诉我是否有更好的方法来监听数据库的变化。任何帮助都将不胜感激。

最佳答案

在您的案例中无法避免主动轮询。所以你的做法基本上是正确的。

要提高性能,请执行以下操作:

  • 创建一个带有 bool 字段的表 status
  • 如果发生值得通知的事情,将 status 设置为 true
  • 在 Node.js 中读取 status
  • 如果为 true:执行选择并将 status 设置为 false
  • 如果为假:什么都不做

确保您的操作是原子的 -> 使用事务。

关于mysql - 有没有更好的方法在不使用 setInterval() 函数的情况下监听 Node JS 中的表更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40018936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com