【问题标题】:PHP Database Value Change Listener, is there a better way?PHP 数据库值更改监听器,有没有更好的方法?
【发布时间】:2011-07-28 06:17:30
【问题描述】:

我们公司负责销售。我们收到订单,我们的 PHP 应用程序允许我们的 CSR 处理这些订单。

数据库中有一条记录不断变化,具体取决于特定 CSR 当前正在处理的订单 - 每个 CSR 都有一个这些字段。

目前,一个完全独立的页面每秒使用 xmlhhtp 请求轮询数据库并接收响应。如果响应不为空(仅当数据库中的值发生更改时),它会执行一个操作。

您可以想象,这相当于每秒一个数据库查询以及每秒一个 http 请求。

我的问题是,有没有更好的方法来做到这一点?可能是使用套接字的侦听器?执行更改时会 ping 我的脚本而不强制我轮询数据库和/或发送 http 请求的东西。

提前致谢

【问题讨论】:

    标签: php ajax request listener xmlhttprequest


    【解决方案1】:

    首先,1 次查询/秒和 1 次请求/秒确实不多。特别是因为这个数字不会随着您获得更多的 CSR 或销售额而改变。如果您正在执行 1 个查询/订单/秒或您可能需要担心的事情,但就目前而言,如果它运行良好,我可能不会更改它。可能值得在查询上运行一些指标以确保它快速运行,在索引列上进行选择等。大多数数据库都提供了一种检查查询执行方式的方法,例如 MySQL 中的 EXPLAIN 语法。

    也就是说,有几个选项。

    【讨论】:

      【解决方案2】:

      您可以使用基于消息队列的异步架构。当 CSR 开始处理订单并且数据库中的记录发生更改时,会将一条消息添加到队列中。您的脚本可以阻止对最新队列项目的请求,或者您可以实现一个队列,该队列会在添加消息时自动通知您的脚本。

      除非您同时发生数百万个此类事件,否则这种设置将导致操作在事件发生后的几毫秒内执行,并且您不会不断地向数据库发出无用的轮询请求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多