PHP ajax多次调用

时间:2017-01-09 12:08:13

标签: php jquery ajax asynchronous jqxhr

我一直在寻找网络和这里的几个答案,但我找不到解决我问题的答案。

我正在对同一个PHP脚本进行多次JQuery ajax调用。首先,我看到每个电话只在前一个完成后执行。我通过在脚本的开头添加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

我想我的做法是错误的。提前感谢您的宝贵帮助!!

托马斯

1 个答案:

答案 0 :(得分:1)

这可能是浏览器限制,每个浏览器实例与单个服务器的最大并发连接数。在Chrome中,这是6,这反映了屏幕截图中显示的块的大小。虽然这是从09年开始的,但我认为它仍然具有相关性:https://bugs.chromium.org/p/chromium/issues/detail?id=12066