MySQL表更改的事件监听器?

Posted

技术标签:

【中文标题】MySQL表更改的事件监听器?【英文标题】:Event listener for MySQL table change? 【发布时间】:2014-01-11 22:32:50 【问题描述】:

是否有 php/javascript/mysql/ajax 事件侦听器或方法可以在 MySQL 表中的数据每次更改时调用函数 - 例如添加新行或更改/删除行时。

还是我从错误的角度看它,我还在学习 AJAX。

只是寻找正确的方向,我找不到任何东西。谢谢。

编辑 基本上当用户坐在我的网站上时,如果新数据从另一个来源添加到服务器上的数据库中(不是因为该用户的操作),我希望能够调用一个函数来异步加载该新数据对于这个用户。

【问题讨论】:

不,Javascript 与数据库没有直接连接。您必须编写一些代码来执行此操作。 你描述的听起来比mysql更适合redis... 【参考方案1】:

如果您尝试根据 MySQL 中的其他更改来更改 MySQL 中的日期,触发器应该可以工作:

http://dev.mysql.com/doc/refman/5.6/en/triggers.html

如果您希望在 MySQL 中的数据发生更改时进行服务器端或客户端回调,那么您将无法通过 MySQL 本身获得该功能。您可能需要在架构中添加一些内容(标志、时间戳等),以指示数据何时更改,并运行异步进程以根据数据的更改执行某些操作。

【讨论】:

您会使用 javascript setTimeout() 函数来检查标志是否已更改?例如,如果用户坐在页面上并等待加载新内容。还是有更好的选择。 @badmin 这是一个选项,尽管还有其他选项,例如 Comet/long-polling 或 web sockets。【参考方案2】:

为此,您需要使用MySql Proxy

MySQL Proxy 是一个简单的程序,位于您的客户端和 MySQL 服务器之间 可以监控、分析或改变他们的沟通方式。它的灵活性允许 用途广泛,包括负载平衡;故障转移;查询分析; 查询过滤和修改;还有很多。安装和构建 说明在源存档中

或者你需要维护一个日志

【讨论】:

【参考方案3】:

您可以使用以下方法处理来自 MySQL DB 的每个或选定更改的事件

https://github.com/spencerlambert/mysql-events

【讨论】:

以上是关于MySQL表更改的事件监听器?的主要内容,如果未能解决你的问题,请参考以下文章

监听用户更改事件(多用户设备)

如何更改哪个组件正在监听事件

使“scrollLeft”/“scrollTop”更改不触发滚动事件监听器

监听 CKEditor 5 中内容更改时触发的事件

evently 中动态内容的事件监听器

Zookeeper之Watcher监听事件丢失分析