0

我有一个使用 Oracle 并运行夜间作业的旧系统,也就是 Batch。在批处理期间,它会将多个事件发布到该数据库中的多个表中。我想创建一个可以监视这些更改的基于 Web 的应用程序。

我的总体想法是

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

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

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

附带说明:我尝试使用 NodeJS 进行类似的练习。我没有连接到真实的数据库,而是在服务器代码中模拟了事件。同样,它是一个基于 jquery 的页面,其中事件通过服务器的发出(消息)很好地发布。

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

谢谢。抢

4

1 回答 1

1

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

因此,在您的网络应用程序中,有一个 ajax 调用(如果您使用过它,请使用 jQuery,它可以很好地完成工作)以每分钟/10 秒/秒调用一个 PHP 脚本 - 无论您想要响应多快 - 并采取行动在结果上。PHP 脚本将连接到数据库并报告任何更改。

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

Javascript 轮询上的文字或警告 - 确保您没有使用 setInterval() - 但每次 AJAX 调用返回(或返回失败)时开始下一次。如果服务器太忙而无法响应并且您发送另一个请求,它会使其更忙并从那里走下坡路。因此,当您收到回复或在合理的时间后未能获得回复时,请设置下一次投票。

您可以在 myresistance.net 中看到这一点:它运行 WordPress 和 SMF 安装 - 如果您在 Wordpress 部分(博客/新闻位),那么它每隔几分钟就会使用“ping”功能轮询数据库。这将检查数据库以查看您是否已登录或退出 SMF 部分,如果已登录,将重新加载 WordPress 部分,还会根据需要登录或退出。

于 2012-05-19T08:37:19.670 回答