使用php监控mysql的变化**没有**轮询

时间:2011-06-27 21:42:25

标签: php mysql polling ajax-push

我见过很多与我问过的问题类似的问题。 他们中的一些人表示可以进行民意调查,这并不会显着影响数据库性能,有些仍未得到答复。我想知道的是:

  • 我可以执行类似于ASP.NET的sqldependency,这有助于找出何时对数据库进行更改 WITHOUT 轮询。
  • 我知道轮询是可以做的,可能不会影响数据库性能,但我需要在更新后立即知道更新,所以我觉得我需要更好的东西,而不仅仅是每1秒轮询一次。
  • 作为补充点,必须将服务器上检测到的更新(Ajax Push - 我正在使用Ajax Push Engine)推送到订阅特定频道的所有客户端。

谢谢&问候, Thothathri Srinivasan

4 个答案:

答案 0 :(得分:3)

Redis PubSub

我希望triggers可以帮助你,但经过一些检查后,我(非常)怀疑我。

您可以使用redis pubsub实现目标。 Redis非常快data structure servefr。将数据库更改发布到通道,让感兴趣的客户端通过订阅同一通道(实时)来检测更改。

Downloading/Installing redis非常简单,作为额外的奖励,您还将“获得一个开源,高级键值存储。它通常被称为数据结构服务器,因为键可以包含字符串,哈希,列表,设置和排序集。“

安装redis可能是最好的方法,但是如果你不能,你可以使用免费的http://redistogo.com计划来讨论redis服务器的限制,你只需要5MB来存储你的数据,它会不要坚持光盘。

答案 1 :(得分:0)

您可以使用带有websockets或comet等实现的服务器推送。

答案 2 :(得分:0)

我喜欢阿尔弗雷德的pubsub想法。我会将数据库视为插入事件的订阅者,而不是规范版本。也许这对您现有的代码库来说是不可能的。您还可以监视数据库服务器上的二进制日志以观察更改,并将此信息提供给订阅者。

答案 3 :(得分:0)

我认为Q4M正是你想要的 http://q4m.github.com/tutorial.html