PHP / Mysql中的动作监听器,每当有任何记录插入表中时?

时间:2012-11-22 10:30:16

标签: php mysql

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

我已经实现了一个解决方案,它每30秒检查一次数据库,即如果在聊天表中发生任何更改,则刷新我的聊天列表。它会影响很多性能,并使网站变慢。

我们的动作监听器只有在表中插入任何行时才会调用它吗?

有什么想法吗?

3 个答案:

答案 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/