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:每 10 秒检查一次 mysql 数据库是不是有任何新行