2012-02-12 25 views
1

我想創建一個出價系統,用戶可以在其中看到項目的當前價格。如果其他位置的其他用戶在我之前出價,它應該自動更新我的瀏覽器中的出價。自動更新出價 - PHP/Ajax

我已閱讀關於autoupdate JS + Ajax函數,但即使我放置5秒計時器來自動更新用戶瀏覽器上的內容,它會不會通過每5秒發出一次ajax調用來在服務器上增加一些額外的負載?它的招標系統,使用戶將有1-2秒內更新出價,所以如果我每隔1到2秒就會自動更新一次ajax調用,它會給服務器帶來很大的負擔。

所以我想知道有沒有更好的方法來處理這種類型的東西? twitter/facebook如何更新用戶的提要?

+1

看看這個答案 - http://stackoverflow.com/a/7132828/295508服務器推送方法或某種網絡套接字系統應該爲你工作 – JohnP 2012-02-12 13:18:43

回答

3

AJAX與否,招標系統總是有很高的要求,因爲人們不斷刷新頁面以檢查最新的投標信息。

你可以看看並嘗試long polling。長輪詢一種方法,您可以將數據從服務器「推送」到瀏覽器,以響應瀏覽器的HTTP請求。這是一個普通的HTTP連接。這可能會減少從用戶發送到服務器的請求數量,但是您的用戶和服務器之間仍然會有許多開放和活動的連接。

1

你會想看看長輪詢。從本質上說,這是它如何工作的

  • 在你需要某種事件機制(與PHP沒有probem)
  • 客戶端(瀏覽器)服務器啓動一個AJAX請求引用一個招標項目
  • 服務器檢查如果出價發生變化,則返回請求
  • 如果不是,他等待一段時間(分鐘範圍),等待與此出價有關的事件
  • 如果發生此類事件,服務器將返回請求與信息,如果不是,他返回「沒有出價」的請求信息
1

您也許能逃脫流模型...

每個JS客戶端連接到服務器一次,並保持連接錯誤打開。隨着新事件到達服務器,它們將實時廣播到所有打開的連接。

這與Twitter用於發佈推文的機制類似。

+0

你可以在任何地方展示我的任何例子嗎?任何示例腳本? – 2012-02-12 13:34:57

+0

看看這個http://ajaxpatterns.org/HTTP_Streaming#Solution – Basic 2012-02-12 20:07:29