3

他们是我们知道的任何方法/方式,在所需的表中发生了任何变化吗?

我已经实现了一种解决方案,它每 30 秒检查一次数据库,即如果聊天表中发生任何更改,则刷新我的聊天列表。它降低了很多性能并减慢了网站速度。

它们是我们的动作监听器仅在表中插入任何行时调用的任何方式吗?

任何的想法?

4

2 回答 2

3

您可以创建带有通知的表(它总是只包含过去 2 小时左右的未读消息),然后创建触发器[ syntax ],每次更改发生时都会创建新的通知:

CREATE TRIGGER create_notification AFTER INSERT ON chats
FOR EACH ROW INSERT INTO notifications (...) VALUES( NEW.col1, NEW.col2)...

然后你会得到更小(更快)的数据库表。

有一些替代方案,例如编写套接字服务器,但我认为它的资源效率不如池化数据库,而且我在运行 php 脚本很长一段时间内都有不好的体验。

于 2012-11-22T10:35:39.470 回答
2

那么在您的场景中,您需要一个监听器,它跟踪新的聊天行插入数据库的那一刻。

如果您在将聊天消息插入数据库之前向用户发送聊天消息会更容易。

您可以使用套接字。您可以使用 nodejs+socket.io 来执行此操作。这里有一点关于

socket.io 和 node.js 向特定客户端发送消息

你也可以看看这篇文章

https://www.flynsarmy.com/2012/02/php-websocket-chat-application-2-0

于 2012-11-22T10:47:51.957 回答