2012-12-24 33 views
0

在PHP Web應用程序中併發性和負載平衡是由服務器還是應用程序本身完成的?PHP Web應用程序併發性和負載平衡

如果我們在純PHP中編寫應用程序(不使用框架),它將處理併發和負載平衡?

如: -
網站有10個項目銷售,
但1000客戶試圖購買它的同時,
會發生什麼

如果我們使用PHP框架(CakePHP中,Codeignator)它是否向我們的應用程序添加額外的代碼

另一件事是我們不想擔心併發性,做錯誤處理和給予休息做服務器或我們必須考慮在我們的應用程序中的併發處理。

回答

2

負載均衡通常由服務器框架處理。 PHP本身不會爲你做任何負載平衡。如果您的網站無法同時處理1000個客戶,您的網站將無法使用。

+0

如果我們使用PHP框架(cakePHP,Codeignator)是否將額外的代碼添加到我們的應用程序中?其他的事情是我們不想擔心併發性,做錯誤處理和給予休息做服務器或我們必須考慮在我們的應用程序中的併發處理。 –

+0

假設您要採用「簡單」路線(在您的站點的不同實例前面考慮AWS負載平衡器),否則不需要擔心併發性。但是,每種情況都有一個星號,但通常情況下,通過使用Amazon提供的服務器框架,可以將鏡像的Web服務器連接到一個數據庫後端,並在前端使用負載平衡器,以便您可以有多個Web實例處理工作流程和負載平衡器確定將哪個客戶發送到哪臺機器。 – L0j1k

+0

非常感謝。現在我有了一個想法。 –

2

不,PHP不會爲您做任何負載平衡。併發在這裏是一個意圖問題。 沒有這樣的事情處理併發你。這是一個當兩個併發請求進來時你想要發生什麼的問題.PHP建立在每個請求模型上。這意味着每個請求都由PHP並行處理。所以PHP不關心你有多個併發請求同時進入。他們分開處理。

負載均衡通常由單獨的負載平衡軟件(如VarnishPound)處理。併發通常由管理您希望通過特定要求控制的各種數據的外部流和服務器處理,例如數據庫,memcachedreddis之類的鍵/值存儲區或作業管理器/隊列如Gearmanzmq或您的郵件服務器。這些都是PHP定期與之通信的所有內容,通常負責涉及用戶與基於Web的應用程序交互的各種任務。 PHP本身只是一個非常薄的中間人,它允許你腳本和控制所有這些交互如何運作。