PHP & MySQL:检查表的数据是不是在没有轮询的情况下发生了变化?

Posted

技术标签:

【中文标题】PHP & MySQL:检查表的数据是不是在没有轮询的情况下发生了变化?【英文标题】:PHP & MySQL: Check if table's data has changed without polling?PHP & MySQL:检查表的数据是否在没有轮询的情况下发生了变化? 【发布时间】:2011-05-26 16:27:31 【问题描述】:

有没有一种方法可以在不连接或查询的情况下测试 mysql 表的数据是否发生了变化

这听起来可能很奇怪,但在 ASP.NET 中,您可以设置 SqlDependencies,它们是在数据更改时发生的一种事件(因此您不必轮询数据库)。

【问题讨论】:

如果您设置触发器以记录到文件并检查该文件? 即便如此,他也必须轮询以检查该文件是否已更新,对吧? @hari,是的,但我相信检查filmtime 比连接到数据库并执行查询要快得多。 【参考方案1】:

可能不适合您的解决方案(特别是如果 db 的写入者与读取器不在同一应用程序空间中),但如果在插入时,您将一些应用程序范围的变量设置为 Last updated 值。 这避免了您直接轮询数据库,但可能仍会对该值的应用程序进行一些轮询。

【讨论】:

【参考方案2】:

您可以在触发器内使用 UDF 通过套接字发送消息。如果您不能开发自己的 udf,那么也许 sys_exec 和 telnet 的组合就可以解决问题。

http://bernardodamele.blogspot.ch/2009/01/command-execution-with-mysql-udf.html http://www.php.net/manual/de/function.socket-create.php

但要小心并做好异常处理,即套接字超时。

【讨论】:

以上是关于PHP & MySQL:检查表的数据是不是在没有轮询的情况下发生了变化?的主要内容,如果未能解决你的问题,请参考以下文章

PHP和MySQL,快速连续多次检查行的有效方法?

如何检查php中是不是已经存在mysql数据库? [复制]

PHP:每 10 秒检查一次 mysql 数据库是不是有任何新行

从数据库而不是会话中获取特定产品的数量 - 购物车(PHP 和 MySQL)

PHP MYSQL 怎么判断某个表的字段是不是存在

PHP, MYSQL, FOREACH 检查是不是相同的值