在 Web 应用程序中,许多 jQuery+Ajax+PHP 进程在同一客户端中不是 运行 并行

In a web application many jQuery+Ajax+PHP processes not running parallel in the same client

在与一台服务器交互的 Web 应用程序中,有一个 jQuery Ajax 调用和一个 PHP 脚本,执行大约需要 20 秒。

$(document).ready(function() {
    $.ajax({
        type: 'POST',
        dataType: 'json',
        url: 'createPDF.php',
        data: str,
        success: function(response) {
            showPDF(response);
        }
        error: function() {
            console.log('ERROR WHEN CREATING PDF');
        }
    });
});

与此同时,用户要求应用程序通过另一个独立于 createPdf 的 jQuery Ajax 获取列表 (getList.php)。

$(document).ready(function() {
    $.ajax({
        type: 'POST',
        dataType: 'json',
        url: 'getList.php',
        data: str,
        success: function(response) {
            showList(response);
        }
        error: function() {
            console.log('ERROR WHEN GETTING LIST');
        }
    });
});

问题是 getList.php 仅在 createPDF.php 完成后才开始执行。

该应用程序与会话一起工作,并且已在单独的客户端中完成测试,在这种情况下,两个请求 运行 并行,但在同一台计算机中它们不会。

在这种情况下如何运行 两个请求并行?

谢谢

基本上发生的事情是在您的服务器上会话文件被第一个脚本锁定,例如saveFiles。该脚本完成其任务后,会话将再次解锁。不幸的是,您的脚本 getList 想要访问同一个会话,因为它已被锁定,getList 将不得不等到它被解锁。

一个解决方案是在所有会话数据写入完成后调用session_write_close(),这将导致会话文件被解锁并被下一个脚本使用。该调用显然应该在 session_start() 之后尽快发生,以尽量减少其他请求的等待时间。

有关更详细的说明,请查看