同时 AJAX 请求无法并行运行
可能会遇到以下问题:两个 AJAX 请求,其中一个用于将数据导出到 XLSX 文件另一个用于显示进度更新,无法同时运行。第一个请求非常耗时,似乎阻止了进度更新的显示。
说明:
此行为可归因于会话阻塞。 PHP 默认将会话数据存储在文件中。当使用 session_start() 启动会话时,会话文件将打开以进行写入并锁定以防止并发修改。因此,任何后续启用会话的 PHP 请求都必须等待前一个请求释放锁定才能继续。
解决方案:
要解决此问题,请执行以下操作:可以将 PHP 配置为使用替代会话存储方法(例如数据库、memcached),或者在向会话写入数据后显式关闭会话写入。后一种方法可以使用 session_write_close() 函数来实现。下面是一个示例:
<code class="php"><?php session_start(); // start session // Write data to session (if necessary) session_write_close(); // close session file, releasing lock // Read or use session data as needed</code>
通过关闭会话写入,可以解锁会话文件并允许后续 AJAX 请求继续进行,而无需等待第一个请求完成。
以上是为什么我的同时 AJAX 请求没有并行运行?的详细内容。更多信息请关注PHP中文网其他相关文章!