我们了解他们的任何方法/方式,是否在所需的表中发生了任何变化?
我已经实现了一个解决方案,它每30秒检查一次数据库,即如果在聊天表中发生任何更改,则刷新我的聊天列表。它会影响很多性能,并使网站变慢。
我们的动作监听器只有在表中插入任何行时才会调用它吗?
有什么想法吗?
答案 0 :(得分:3)
您可以创建包含通知的表格(过去2小时左右始终只包含未读邮件),然后创建trigger [syntax],每次更改时都会创建新通知:< / p>
CREATE TRIGGER create_notification AFTER INSERT ON chats
FOR EACH ROW INSERT INTO notifications (...) VALUES( NEW.col1, NEW.col2)...
然后你会得到更小(更快)的数据库表。
有一些替代方法,比如编写套接字服务器,但我认为它比汇集数据库的资源效率更低,而且我在很长一段时间内运行php脚本的经验很糟糕。
答案 1 :(得分:2)
你应该只是插入数据来保存历史记录,但机制应该通过套接字来完成,不要让数据库过载,请检查http://dev.kafol.net/2008/11/writing-chat-server-socket-in-php.html
答案 2 :(得分:1)
在你的场景中你需要一个监听器,它跟踪新的聊天行插入数据库的那一刻。
如果在将用户插入数据库之前向用户发出聊天消息,将会更容易。
您可以使用套接字。你可以使用nodejs + socket.io来执行此操作。这里有点关于那个
socket.io and node.js to send message to particular client
你也可以看看这篇文章
http://www.flynsarmy.com/2010/05/php-web-socket-chat-application/