PHP数据库值更改侦听器,有更好的方法吗?

时间:2011-04-02 13:25:12

标签: php ajax request listener xmlhttprequest

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

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

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

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

我的问题是,有更好的方法吗?可能是使用套接字的听众?在执行更改时会对我的脚本执行ping操作而不强制我轮询数据库和/或发送http请求。

提前致谢

2 个答案:

答案 0 :(得分:1)

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

那就是说,有几个选择。

答案 1 :(得分:0)

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

除非您同时发生数百万个这样的事件,否则这种设置将导致在事件发生的几毫秒内执行操作,并且您不会经常对数据库进行无用的轮询请求。

相关问题