2016-03-15 65 views
0

我有一個Javascript函數每5秒運行一次,並通過一個jQuery AJAX調用從同一服務器請求信息。該函數在頁面加載後無限期運行。AJAX查詢每次精確失敗60秒

出於某種原因,AJAX查詢失敗大約每隔兩分鐘,並顯示

ERR_EMPTY_RESPONSE

在控制檯中。奇怪的是,它只有60秒失敗,然後再開始工作一兩分鐘。

到目前爲止,我已經嘗試沒有成功:

  • 不同的瀏覽器
  • 其他互聯網連接
  • 改變功能的輪詢時間。 (仍然失敗了60秒的時間間隔。例如,每10秒,失敗6次,或者5x12或1x60)
  • 網絡搜索這表明我的電腦上衝洗IP設置

我從來沒有任何問題,我最後一臺服務器是VPS。我現在正在與GoDaddy共享主機,並想知道這個問題是否存在。儘管如此,其他網站和AJAX調用服務器在停機期間仍能正常工作。

我還用來通過HTTPS運行網站,現在它只是通過普通的HTTP。不確定是否相關。

這裏的功能的膽量:

var interval = null; 
function checkOrders() { 
interval = window.setInterval(function() { 
    $.ajax({ 
     type: "POST", 
     dataType: "json", 
     url: "http://www.chipshop.co.nz/ajax/check_orders.php", 
     data: {shopid : 699}, 
     error: function(errorData) { 
     //handle error 
     }, 
     success: function(data) { 
     //handle success 
     } 
    }); 
}, 5000); // repeat until switched off, polling every 5 seconds 
} 
+1

檢查網絡選項卡,看看什麼是請求和響應屬性... –

+0

請在這裏分享你的控制器代碼,它看起來像你使用Magento –

+1

不知道它是否相關,但你爲什麼使用'POST'來檢查命令?你沒有創建任何新的資源,你應該在這裏使用'GET' –

回答

1

解決:原來的問題是與GoDaddy託管。太多的POST請求導致60秒的「禁止」訪問該文件。改爲GET可以避免這種情況。

This page包含用戶emrys57答案:

對於我來說,這個問題是由託管公司(Godaddy的)造成 後處理操作,這些操作有實質性的響應數據(任何超過千字節的幾十 更多)作爲某種安全威脅。如果更多 比在一分鐘內發生的其中的6個更多,則主機拒絕執行 在下一個 分鐘期間響應POST請求的PHP代碼。我不完全確定主機做了什麼,但我做了 ,通過tcpdump可以看到一個TCP重置數據包,作爲對來自瀏覽器的POST 請求的響應。這導致在 中返回一個jqXHR對象的http狀態代碼爲0.

將操作從POST更改爲GET可解決問題。這不是 明確爲什麼Godaddy強加此限制,但更改代碼更容易 比改變主機。