2014-04-19 22 views
1

我有一個交互式網頁,在用戶交互時向服務器發出異步請求(加載圖像,數據等)。在本地開發機器上模擬臨時無響應的服務器或網絡擁塞(Apache/PHP)

作爲最後階段,我正在實施JavaScript代碼,以正確處理服務器太忙或網絡擁塞發生且請求不滿意的情況。

在開發過程中,服務器和客戶端(瀏覽器)都在開發機器上運行(本地主機)。

要測試代碼,我必須在我的本地開發機器上模擬這些情況。

我可以很容易地模擬「服務不可用」響應。

但是,如何模擬「根本沒有響應」?

拼勁

sleep(3600); 

在當請求發出足夠多的要達到什麼我需要模擬得到執行的php的開始?

還是有東西仍然回到瀏覽器?

有沒有更好的方式來測試糟糕的服務器可用性情況下的瀏覽器端代碼?

編輯

一種選擇是隻關閉在服務器上的本地主機上運行由戴夫建議在他的回答。

我寧願 - 如果可能 - 避免這種情況。

我希望能夠錯過一些請求並滿足其他一些要求。

後面的想法是,在瀏覽器上運行的客戶端JavaScript代碼將重試失敗的請求。

服務器的一個請求模擬不可用,客戶端重試,服務器給予迴應......

回答

1

只有這樣,你會永遠遇到的那些是,如果你的異步請求JavaScript在呼喚從數據/文件服務器以外的服務器推出主頁面。所以如果你只是運行一個Apache的實例,那麼你永遠不會遇到網絡擁塞或不可用。例如,如果您將apache作爲您的主要Web服務器運行,而將nginx作爲您的內容服務器運行在不同的端口上,那麼只需要停止nginx爲您的內容提供服務即可對其進行測試。

如果你的意思是你想從用戶的角度來測試你的web服務器處於離線狀態,然而他們的客戶端仍然在處理/運行javascript(假設你的服務器在線用於初始加載/請求),然後加載頁面您的瀏覽器並停止您的Web服務器,然後等待它在客戶端發生錯誤。當然,您需要重新啓動Web服務器以重新加載文件並在更改後重新測試。

+0

我的意思是我想從用戶的角度來測試你的web服務器處於脫機狀態,但他們的客戶端仍在處理/運行javascript。當然,關閉在本地主機上運行的服務器是另一種選擇,但我更願意避免這種情況(如果可能),並使用一種技術讓我離開服務器並選擇性「錯過」某些請求並滿足其他一些請求。 - 我將編輯我的問題以指定我不想關閉服務器。感謝您的回答 – Paolo

+0

如果您都在本地主機上運行,​​那麼沒有真正的方法可以模擬。你可以嘗試把你的wamp服務器等在線,並通過網絡接口訪問它,而不是本地主機,然後關閉你的網絡連接。或者你也許可以讓一個負載測試器運行並限制你的mysql配置,以便數據庫服務器鎖定。但除此之外,沒有真正的方法來測試你想測試什麼,而不關閉你的網絡服務器。 – Dave

相關問題