2011-10-13 96 views
3

我必須做一個網站,有很多活動,我會喜歡你的建議。對於大型活動PHP的推薦

同一頁面將被5000個用戶同時查看... 有些數據必須每5秒更新一次...每個用戶都有不同的數據。 所以每5秒:5000更新 - 5000 SQL查詢...

我不知道AJAX是最好的工作方式......要求服務器新數據每5二是相當重...

有沒有一種方法可以做到這一點?如果不是的話,你有什麼要求改進網站的要求?

謝謝

+0

在Google上有數千篇關於高負載的文章。最簡單的方法:1)緩存,2)使用分佈式體系結構的應用程序(幾個Web應用程序與負載平衡器,分區爲數據庫,複製讀取縮放等) – varela

+0

思考性能是好的。實時應用程序,如便士拍賣網站更新數據每一秒。與此相比,你的問題是非常小的。但我有一些名字comet,node.js/socket等 – Gowri

+0

首先,你需要檢查系統中的瓶頸。在沒有了解其瓶頸的情況下,無法創建高度可擴展的架構。 – varela

回答

2

那麼,你的說法是,你會有很多用戶一次請求很多東西。

我要做的第一件事就是確保您定期備份數據庫,內容和整個網站(代碼)。這樣,如果有什麼事情搞亂了大量的請求,你總會有備份。

接下來我要說的是確保您有多臺運行該服務器的服務器,因此服務器A可以有2500人,服務器B可以有2500人(例如)。另外,如果你確保所有的查詢都經過了優化,我認爲你將要使用AJAX並不重要,但是你打算這麼做的速度會很慢。解決該問題的最佳方法是使用memcache或某種緩存實用程序。

還有一點需要確保所有代碼都經過高度優化和消毒,以防止儘可能多的滯後和安全問題。我相信你已經聽說過它,但是你可以使用「HipHop for PHP」來代替C(或C++)運行你的代碼,而這個代碼的開銷較小。這是我沒有親自嘗試的,但我聽說它非常擅長它。

請讓我知道如果這有助於:)

+0

感謝您的完整答案! 關於備份RAID和負載平衡做得好! 用於兌現,我不確定這會有所幫助...數據庫由其他服務器提供最少5次每秒 和嘻哈我會嘗試如果我找到一些時間:) – gaymer

2

如果您需要動態請求,然後ajax做的工作。

如果服務器無法處理它,那麼您需要的是某種負載平衡(Web服務器羣集)以及可能的羣集數據庫。

還要確保每個請求儘可能優化,無論是在後端計算,數據庫查詢還是返回給客戶端的數據量。

1

首先,你會不會在同一時間5K更新。您的用戶不會在同一時間進入您的頁面,因此請求將始終發生。

Ajax對我來說似乎很好,你只需要非常小心你的請求(如果你不需要它,請不要問問領域)。

持續連接應該是一個好主意。

考慮有多個服務器(數據庫,加載balencer ...)

2

如果信息的唯一路由是數據庫 - > web服務器 - >應用程序,那麼AJAX是處理它的最好方法。僅請求數據而不是整個網頁可以減輕服務器的部分負載。

此外,請嘗試平衡服務器之間的負載。您可以使用負載均衡器來執行此操作,但您也可以從其他服務器獲取AJAX數據。如果這意味着從不同的域中獲取它,那就沒問題了:只需使用JSONP(http://en.wikipedia.org/wiki/JSONP)即可。