2017-01-09 62 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