2017-01-09 66 views
0

我一直在尋找圍繞網絡和這裏的幾個答案,但我找不到解決我的問題。PHP ajax多次調用

我提出幾個JQuery的AJAX調用同一PHP腳本。首先,我看到每次調用只有在完成前才執行。我加入session_write_close()到腳本的開頭,以防止PHP從會話鎖定到其他Ajax調用改變了這個。我沒有編輯腳本中的$ _SESSION變量,只能從中讀取。

現在的行爲是更好,但的,而不是我的所有請求同時開始,他們去塊,你可以在圖像上看到:

Request timeline

我應該怎麼做才能讓我所有的請求在同一時刻開始,實際上在沒有任何其他請求的鏈接的情況下執行。

爲了更清楚,這是我的js代碼:

 var promises = []; 
     listMenu.forEach(function(menu) { 
      var res = sendMenu(menu);//AJAX CALL 
      promises.push(res); 
     }); 
     $.when.apply(null, promises).done(function() { 
      $('#ajaxSpinner').hide(); 
      listMenu = null; 
     }); 

我的PHP腳本只是插入/更新數據,並開始與:

<?php 

session_start(); 
session_write_close(); 

//execution 

我想我做的事情錯了辦法。提前感謝您的寶貴幫助!

托馬斯

+0

http://stackoverflow.com/questions/1060539/parallel-asynchronous-ajax-requests-using-jquery/22317997#22317997 – mplungjan

回答

1

這可能是一個瀏覽器的限制,還有就是每個瀏覽器實例中的一個服務器的併發連接的最大數目。在Chrome中,這是6,反映了屏幕截圖中顯示的塊的大小。雖然這是從09,我相信它仍然是相關的:https://bugs.chromium.org/p/chromium/issues/detail?id=12066

+0

是的,所有的瀏覽器都有侷限性併發請求:http://stackoverflow.com/q/561046/1220930,http://stackoverflow.com/q/985431/1220930 – Timurib

+0

謝謝你們兩位爲你解答。我不知道瀏覽器的限制。我想我會保持現在的狀態,直到我找到更好的東西。 – ThomasLC