2011-04-02 56 views
1

我們公司處理銷售。我們收到訂單,我們的PHP應用程序允許我們的CSR處理這些訂單。PHP數據庫值更改監聽器,有更好的方法嗎?

數據庫中有一條記錄,根據特定CSR正在處理的訂單而不斷變化 - 每個CSR都有一個這樣的字段。

目前,一個完全獨立的頁面每秒使用xmlhhtp請求輪詢數據庫並接收響應。如果響應不是空白(僅當數據庫中的值已更改),則它執行操作。如你所想,這相當於每秒一次數據庫查詢以及每秒一次http請求。

我的問題是,有沒有更好的方法來做到這一點?可能是使用套接字的聽衆?在執行更改時不會強制我輪詢數據庫和/或發送http請求,這些操作會對我的腳本執行ping操作。

在此先感謝

回答

1

首先,1查詢/秒和1請求/秒真的不是很多。特別是因爲這個數字不會因爲你獲得更多的CSR或銷售而改變。如果你正在執行1查詢/訂單/秒或你可能不必擔心,但如果它運作良好,我可能不會改變它。在查詢上運行一些度量值可能是值得的,以確保它快速運行,在索引列上進行選擇等。大多數數據庫提供了一種方法來檢查查詢的執行方式,如MySQL中的EXPLAIN語法。

這就是說,有幾個選項。

0

您可以使用基於消息隊列的異步體系結構。當CSR開始處理訂單並且數據庫中的記錄發生更改時,會向隊列中添加一條消息。您的腳本可以阻止對最新隊列項目的請求,也可以實現一個隊列,以便在添加消息時自動通知您的腳本。

除非您有數百萬個這樣的事件同時發生,否則這種設置將導致該事件在毫秒級的事件發生時執行,並且您不會不斷地對您的數據庫進行無用的輪詢請求。