2016-03-03 348 views
0

我有一個網絡應用程序,它使用頻繁的$.ajax()調用向服務器傳輸數據和從服務器傳輸數據。它在虛擬機主機和客戶端之間本地運行。服務器在會話中過多後停止響應請求?

我遇到的問題是,在會話中進行了一定數量的連續呼叫(沒有確定實際的號碼)後,它似乎切斷了。這可能是幾秒或幾分鐘。

我想我分配來電$.ajax()對象,因此他們可能被刪除,例如:

myApp.ajaxRegistry.myAjax = $.ajax({ 
    url: '/path/to/server', 
    error: function() { 
      delete myApp.ajaxRegistry.myAjax; 
    } 
    success: function() { 
      delete myApp.ajaxRegistry.myAjax; 
    } 
}); 

我認爲可能已經改善,但它可能僅僅是巧合。它仍然經常失敗。

我監測到服務器訪問日誌發生這些故障時,我可以看到它甚至沒有提出請求。瀏覽器控制檯中沒有Javascript錯誤。

EDIT

瀏覽器的網絡記錄器指示它發出請求,但服務器沒有響應(根據apache的訪問日誌)。幾分鐘後,它再次開始響應,所以我認爲服務器上有配置。

也許值得一提的是虛擬機服務器經常會失去時間(某種令人討厭的VirtualBox「功能」),所以我想知道這可能是相關的。

UPDATE

我覺得我對服務器時間的直覺可能是正確的。我終於設法讓ntp在虛擬機上正常工作,並且幾個星期後我還沒有遇到這個問題。

+2

沒有固有的限制。以什麼方式使事情「停止工作」?你怎麼能告訴它停止? – Pointy

+0

對於失敗的請求,JavaScript的響應看起來如何? – Halcyon

+0

@Pointy:應用停止按照預期行事。我在查看服務器日誌的同時觸發請求,並且沒有將條目添加到日誌中。 –

回答

0

只是在一個單獨的帖子中得到答案:服務器時間需要準確(至少在這種情況下)或AJAX請求混淆。