使用PHP监听数据库更改

时间:2012-05-19 08:00:32

标签: php jquery ajax database

我有一个遗留系统,它使用Oracle并运行夜间作业,即Batch。在批处理期间,它将多个事件发布到该数据库中的多个表。我想创建一个可以监控这些变化的基于Web的应用程序。

我的总体想法是

  • 创建一个PHP服务器/后端应用程序,用于侦听db中的任何更改(特别是上述表)并发出消息/数据(json,XML)
  • 有一个Ajax驱动的(HTML5,jquery)网络应用程序“注册”以收听PHP服务器
  • 根据这些事件和消息更新Web应用程序上的各种组件

有没有人做过这样的事情,可以提供一些指导或指导?

这样的项目应该基于PHP框架,例如Yii吗?我通读了Yii的文档,并提到了它的db API。

旁注:我尝试使用NodeJS进行类似的练习。我没有连接到真正的数据库,而是模拟服务器代码中的事件。同样,它是一个基于jquery的页面,通过来自服务器的发送(消​​息)很好地发布了事件。

所以,底线:希望PHP服务监听db更改;注册前端应用程序以监听更改;更新前端。

感谢。 罗布

1 个答案:

答案 0 :(得分:1)

您仍然需要PHP才能连接到数据库(否​​则客户端连接会显示您的用户名和密码)。

所以,在你的网络应用程序中,有一个ajax调用(使用jQuery,如果你已经使用它,它可以正常工作)每分钟/ 10秒/秒调用一个PHP脚本 - 无论你想要一个快速响应 - 并对结果采取行动。 PHP脚本将连接到数据库并报告任何更改。

如果您想要一个单独的服务“监听”数据库更改,请编写普通的PHP(您可以使用broswer运行/调试)。这将是每分钟监视数据库并执行所需操作的PHP脚本。你可以使用你喜欢的任何框架 - 它只是普通的PHP。当你开始工作时,将它设置为“cron”工作。你每分钟运行“PHP -q /path/to/yourfile.php”。当有变化时,PHP可以设置所需的任何标志。

Javascript轮询上的单词或警告 - 请确保您没有用户setInterval() - 但每次AJAX调用返回(或无法返回)时都会启动下一次。如果服务器太忙而无法响应并且您发送了另一个请求,则会使其更加繁忙并从那里开始下坡。因此,当您收到回复时,或者在合理的时间后未能得到回复时,请设置下一个轮询。

你可以在myresistance.net中看到这个:它运行WordPress和SMF安装 - 如果你在Wordpress部分(博客/新闻位),那么它每隔两次用“ping”函数轮询数据库分钟。这将检查数据库以查看您是否已登录或退出SMF部件,如果有,还将重新加载WordPress部件,并根据需要登录或注销。

相关问题