2012-04-19 40 views
2

我模擬使用PHP通過以下方式推送通知:使用PHP和jQuery模擬推送通知導致服務器問題

  1. 一個jQuery的Ajax調用調用服務器上的腳本。
  2. 腳本在每次迭代之後都會使用for循環和睡眠進行延遲。
  3. 如果發生什麼事情 - 循環被打破,信息返回給jQuery。
  4. 如果腳本運行超過一分鐘 - 腳本將返回一個空值。
  5. 當jQuery收到來自服務器的答案時,它解析信息並再次啓動相同的過程。

這是一個程序,由Facebook使用,它的作品就像在他們的網站上的魅力。在我的服務器上,我遇到以下問題: 例如,如果腳本延遲了60秒,並且在第30秒鐘點擊了我網站上的另一個鏈接,我們仍然有30秒的時間來生成輸出。所以我的網絡服務器正在等待那些30秒,並且我的點擊請求在那幾秒鐘之後正在被處理,這使得我的網站幾乎無法使用。我已經重新檢查Facebook,我發現,當你點擊一個鏈接時,頁面永遠不會刷新,並且請求不斷在同一頁面上流動。不過,地址欄會改變。在我的網站上實現同樣的事情的方式是什麼?有沒有辦法強制我的服務器一次處理多個PHP請求,或者我們必須僅使用JavaScript來完成此操作。我錯過了什麼?

P.S據我所知,沒有辦法改變使用javascript的地址欄。

+0

我明白這個概念,但不會投票更有效?這樣你可以等待客戶端,而不是服務器端。你實際上將服務器可以處理的連接加倍。 – Spidey 2012-04-19 12:52:03

+2

爲「使用js更改地址欄」http://stackoverflow.com/questions/824349/modify-the-url-without-reloading-the-page – Tarek 2012-04-19 12:54:46

+0

如果通過查詢您的意思是「客戶端要求服務器進行更改每隔幾秒鐘「就會變得更加不穩定,因爲每個查詢都使用HTTP標頭進行包裝,並且傳輸數據需要更長的時間。我們在這個網站上同時也會有超過1000個用戶,所以想象一下,如果有1000個用戶每隔幾秒要求更改,服務器會發生什麼情況。 – 2012-04-19 12:56:41

回答