2012-02-04 41 views
8

我正在創建一個Web應用程序,需要一個通知系統。我將如何設置我的服務器以從mySQL數據庫提取數據,然後將其推送到瀏覽器。我絕對有想法如何做到這一點。如果有人能夠幫助,那將非常感謝!非常感謝!PHP - AJAX jQuery服務器「推」系統

編輯:我應該更具體一點,我拉數據,因爲在XYZ最近創建了一個帳戶,最近XZY ...非常感謝!

回答

13

您無法將數據推送到瀏覽器,但您可以設置您的網頁以每隔幾秒輪詢您的服務器以進行更新。一個示例設置將是:

從您的網站內部,每隔幾秒鐘(或任何間隔最適合您的情況)運行一個計時器的JavaScript函數。

在頁面加載時啓動該定時器。

該JavaScript函數調用一個AJAX調用Web服務器上的Web服務(更多的在一秒鐘)。

在服務器端,您需要某種類型的系統來跟蹤這些事件並將它們存儲在某個地方,例如在具有時間戳的數據庫表中。因此,例如當XYZ創建一個賬戶時,該賬戶將記錄在數據庫中的「事件」表中。

AJAX調用調用的Web服務將在該表上運行查詢,並檢索自上次調用以來的所有條目。然後只需使用這些結果更新網頁。

這顯然不是100%的「活」,因爲根據你在JS定時器中設置的時間間隔,它會有一個小的延遲,但它非常接近。

+0

非常好的概述。 – 2012-02-04 04:28:08

+2

+1此外,請參閱[推送](http://pusher.com/),[長輪詢](https://en.wikipedia.org/wiki/Push_technology#Long_polling) – drew010 2012-02-04 04:31:20

+0

非常感謝!我一直在互聯網上試圖找到這個地方。非常徹底和偉大的想法。從來沒有想過這個,看着Facebook的網絡請求,那就是他們做的。每219毫秒是確切的。最後一個問題,使用這種方法,是否有任何方法讓服務器在數百萬次的請求運行多年後陷入沉重的困境?謝謝! – 2012-02-04 04:43:21

7

您可以爲您的網站使用websockets和優雅的退化爲不支持websockets的瀏覽器進行長時間投票回退而爲您的網站創建推送通知服務。這確實需要一定數量的技術/編程知識。

這一些好的資源是: http://socket.io(它使用Node.js的後端的網絡套接字和處理退化) http://pusherapp.com(如果你不想來翻去維護自己的服務商業解決方案)

對於支持WebSockets的瀏覽器的列表,你可以搜索「caniuse」 - 這提供了極大的細節,通過瀏覽器版本支持

注意的特點:對於數百萬用戶的應用,如Facebook,我會假設他們已經權衡了爲500萬以上同步用戶和合作夥伴運行websockets的優勢包括在連接到數百萬個套接字的所有節點上保持數據一致將會太多。我可以想象,在套接字系統上執行該操作會是一個邏輯噩夢,而不是基本動作類似於SQL的基礎結構。雖然我不能代表他們發言,但這只是我的假設。然而,你會驚訝有多少網站最近一直在使用推送和輪詢系統:)