2012-04-06 30 views
1

我有一個在php/mysql中實現的網站,並託管在hostmonster(共享主機)。如何縮放我的聊天應用程序?

我打算在我的網站中加入聊天功能,使用戶可以相互聊天。有約。我的網站上有1000個用戶。 目前,我已經實現了一個ajax策略,定期向服務器發送請求(比如說,每4秒)以獲取有關在線用戶和消息的json響應。

這是發送請求的代碼示例:

var timer, delay = 4000; 

timer = setInterval(function(){ 
    $.ajax({ 
     type: 'POST', 
     url: 'update.php?user_id=2', 
     success: function(html){ 
     $('.chat_messages').append(html); 
     } 
    }); 
}, delay); 

但正如我看到的,用戶數量越多,多爲每4秒的要求,和Apache服務器和數據庫的詳細負擔交付響應。

所以我正在計劃一個備用解決方案,它沒有在服務器上的開銷。 我聽說過幾個像APE,Nginx,Node.js,StreamHub這樣的服務器,它們使用COMET/reverse ajax技術來爲請求提供服務,並且對我的目的很有效。

但問題是,我沒有權限在我的hostmonster cpanel上安裝第三方服務器。 有沒有其他解決方法,比如HTML5網絡套接字?

編輯:順便說一下,我也有興趣重建我的Java應用程序,如果有一個可行的解決方案。

+1

你可以在你的主機上運行PHP deamons嗎? – 2012-04-06 08:01:31

+0

是的,我希望PHP守護進程可以在我的主機上創建並運行。 – 2012-04-06 08:09:04

+1

那是哪條路?你可以或不可以:)我問的原因是這可能是你可以使用的解決方案(編寫一個PHP websocket服務器) – 2012-04-06 08:11:25

回答

2

當你想出要求每個用戶不會縮放的新東西4秒鐘。它甚至不適用於聊天應用程序,因爲消息之間的延遲時間太長,導致您的聊天無法使用。

如果我是你,我會首先研究一下不需要任何(或很少)編程的即時聊天解決方案。通常只需在頁面中插入一些JavaScript代碼,提供聊天功能的第三方就可以完成剩下的任務(提供文件,運行聊天服務器等)。我沒有使用任何可用的解決方案,所以我不推薦任何,但快速谷歌搜索產生這個:https://www.meebo.com/websites/這應該給你一個我正在談論的一般概念。

如果上述不適合你,那麼你有一個相當大的項目在你面前。你需要做的是編寫一個websocket服務器(然後在你的聊天應用程序之上)。如果我想解釋如何向你做,我可以寫一本關於它的書,所以我只會這樣說:谷歌是你的朋友。你不是第一個需要這個的人。因此,搜索stackoverflow的技巧,也有開源的PHP websocket服務器(this being one)。

祝你好運。

+0

我會考慮你指出的第二個選項。但是它與php守護進程有什麼關係? – 2012-04-06 08:32:59

+1

websocket服務器作爲PHP deamon運行。 – 2012-04-06 08:37:11

+0

小小更新:我的主機允許創建守護進程/守護進程進程。但默認的超時時間是10分鐘。這似乎爲我創造了障礙,因爲這些請求必須處理更多時間。 – 2012-04-09 12:56:16