2011-04-02 35 views
1

我们公司处理销售。我们收到订单,我们的PHP应用程序允许我们的CSR处理这些订单。PHP数据库值更改监听器,有更好的方法吗?

数据库中有一条记录,根据特定CSR正在处理的订单而不断变化 - 每个CSR都有一个这样的字段。

目前,一个完全独立的页面每秒使用xmlhhtp请求轮询数据库并接收响应。如果响应不是空白(仅当数据库中的值已更改),则它执行操作。如你所想,这相当于每秒一次数据库查询以及每秒一次http请求。

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

在此先感谢

回答

1

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

这就是说,有几个选项。

0

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

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