javascript - 是什么原因导致只有 1 个并发连接?

标签 javascript php ajax apache nginx

我有一个 PHP Web 应用程序。 当同时发生多个 AJAX 请求时,它们似乎在服务器端排队,就像一次只运行一个进程一样。仅当所有请求都从一个浏览器完成时才会发生。

最奇怪的是,有时它会按预期同时运行(屏幕: /image/XRk9C.jpg ),大约 10 分钟后,它会等待一个进程完成,然后才运行另一个进程来逐一执行它们(屏幕:/image/nO6N8.jpg)。

测试截图代码:

sleep(5);
exit();

附注当这些 AJAX 请求排队时,普通的 html 请求也会“在队列中等待”。

最佳答案

我认为这很可能与 session 管理有关。

发生的情况是新请求等待前一个请求中的 session 关闭。

This only happens because session data is accessed, and thus a lock is obtained on the session file.

您可以通过首先不启动 session 来避免这种情况。如果您需要该 session ,则需要在 session 启动后立即关闭该 session 。如果您需要设置 $_SESSION 变量,则需要在关闭 session 之前进行设置。你可以这样做:

session_start();

$_SESSION['some'] = 'value';
session_write_close(); // From here on out, concurrent requests are no longer blocked

$_SESSION 变量在关闭 session 后仍然可用。

另请参阅:https://codingexplained.com/coding/php/solving-concurrent-request-blocking-in-php

关于javascript - 是什么原因导致只有 1 个并发连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56705556/

相关文章:

javascript - 使用json将记录插入mysql

javascript - 在进行调用的脚本的节点之后追加子级

javascript - jQuery:<ul> 中的动态插入将无法正常工作

php - 列出所有 WooCommerce 产品属性名称

php - 从 jQuery 调用 AJAX 并显示等待消息

javascript - Ajax 发布 FormData 和表单

JavaScript 日期在 HighCharts 上转换为 UTC

javascript - 无法使用静态方法返回的类实例访问类方法

javascript - Flask 的 python 函数中的 "method not allowed"

php - DELETE 语句循环中的 bindValue