使用php监视mysql更改**而不进行**轮询

使用php监视mysql更改**而不进行**轮询,php,mysql,polling,ajax-push,Php,Mysql,Polling,Ajax Push,我见过许多与我问的问题相似的问题。 他们中的一些人说可以进行投票,但这不会显著影响数据库性能,有些人仍然没有回答。我想知道的是: 我可以做一些类似于ASP.NET的sqldependency的事情吗?这有助于找出在没有轮询的情况下对数据库进行更改的时间 我知道轮询是可以做的,可能不会影响数据库性能,但我需要在更新完成后立即知道更新情况,所以我觉得我需要比每1秒轮询更好的方法 作为一个附加点,在服务器上检测到的更新必须推送到订阅特定频道的所有客户端(Ajax推送-我使用的是Ajax推送引擎)

我见过许多与我问的问题相似的问题。 他们中的一些人说可以进行投票,但这不会显著影响数据库性能,有些人仍然没有回答。我想知道的是:

  • 我可以做一些类似于ASP.NET的sqldependency的事情吗?这有助于找出在没有轮询的情况下对数据库进行更改的时间
  • 我知道轮询是可以做的,可能不会影响数据库性能,但我需要在更新完成后立即知道更新情况,所以我觉得我需要比每1秒轮询更好的方法
  • 作为一个附加点,在服务器上检测到的更新必须推送到订阅特定频道的所有客户端(Ajax推送-我使用的是Ajax推送引擎)
谢谢和问候,
那些HRI Srinivasan

您可以将服务器推送与WebSocket或comet等实现一起使用。

Redis PubSub 我希望能帮助你,但经过一点检查,我(非常)怀疑

你可以用电脑来实现你的目标。Redis是一款速度极快的产品。将数据库更改发布到某个频道,并让感兴趣的客户端通过订阅同一频道(实时)来检测更改

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


安装它可能是最好的方法,但如果你不能,你可以使用免费计划与Redis服务器对话,但限制是你只能获得5MB的数据存储空间,而且数据不会持久保存到光盘上。

我喜欢Alfred的pubsub想法。我认为数据库是插入事件的订户,而不是规范版本。也许这在您现有的代码库中是不可能的。您还可以监视数据库服务器上的二进制日志,以监视发生的更改,并将此信息推送到订阅者

我认为Q4M正是您想要的

我知道该怎么做,但我只想在数据库本身发生更改时得到通知。@wittythotha--所以将其添加到后端,只在update@Neal-我想我应该更清楚一点-好的,所以数据库可以随时更新,任何人都可以。如果我有两个或多个组织正在使用的数据库,其中一个组织决定更新,我希望其他组织知道这一点。话虽如此,主组织可能每周更新一次,有时更频繁,有时在5秒钟内自行更新。如果我投票,我会做很多不需要的工作,那么有没有办法让其他两个组织知道db的变化?然后我可以推到这两个组织的频道。你可以让php搜索一个更新文件,如果有任何新的条目,然后推出新的infohmm。。。基本上,我也必须轮询更新文件,对吗?因此,这与轮询DB是一样的……如果您真的希望它完全不进行轮询,根据定义,当某些内容发生变化时,您必须让MySQL守护进程向您的侦听应用程序发送信号。如果您的定义不那么纯粹,则可以使用其他解决方案:一个小型本地守护进程,用于监视二进制日志、数据库表文件、触发器集合等。任何类型的消息队列都应该能够达到相同的目的(beanstalk、AMQ、RabbitMQ等)它可以,但在我看来,pubsub比消息队列更好地解决这个问题,因为我们可以/可能有多个侦听器。我看了Redis Pub/Sub。它非常令人印象深刻,毫无疑问,我正在使用APE来做同样的事情。问题不在于发布/订阅频道。问题是,当对数据库进行更改时,我想知道相同的内容,而不必每5秒进行一次轮询。我没有使用php在数据库中进行更改。三家公司中的任何一家都可以改变这种常见的数据库。我需要知道何时进行更改,而无需进行投票,因为更改频率有时为5秒,有时仅为一周。对阿尔弗雷德·弗兰克·法默有什么想法吗?或者也许