javascript - 是什么导致只有 1 个并发连接?
问题描述
我有一个 PHP 网络应用程序。当同时发生多个 AJAX 请求时,它们似乎在服务器端排队,就像一次只运行一个进程一样。只有当所有请求都从一个浏览器完成时才会发生。
最奇怪的是,有时它会同时运行(屏幕:https ://imgur.com/8oDGV8t ),大约 10 分钟后,它会等待一个进程完成,然后才会运行另一个进程,逐个执行它们-one(屏幕:https ://imgur.com/OPkzYNh )。
测试截图代码:
sleep(5);
exit();
PS 当这些 AJAX 请求排队时,正常的 html 请求也在“队列中等待”。
解决方案
我认为这很可能与会话管理有关。
发生的情况是一个新请求等待前一个请求中的会话关闭。
这只是因为访问了会话数据,因此在会话文件上获得了锁。
您可以通过不首先启动会话来避免这种情况。如果您需要会话,则需要在会话开始后立即关闭它。如果您需要设置 $_SESSION 变量,则在关闭会话之前需要它。你可以这样做:
session_start();
$_SESSION['some'] = 'value';
session_write_close(); // From here on out, concurrent requests are no longer blocked
$_SESSION 变量在关闭会话后仍然可用。
另请参阅:https ://codingexplained.com/coding/php/solving-concurrent-request-blocking-in-php
推荐阅读
- c# - C# Active Directory:获取列表临时组成员身份?
- algorithm - 使用 Boris 算法在模拟中出现速度振荡是否正常?
- git - (Git) 错误:src refspec master 不匹配任何
- c# - 带有可更新数据源的 C# DataGridView
- ios - expo ios 模拟器“无法连接到开发服务器”错误(适用于浏览器)
- javascript - next/dynamic 拒绝导入异步函数
- java - okta 对应用程序进行身份验证时如何获取会话
- google-chrome - mv3中chrome扩展中的`eval`
- sql - Azure SQL 锁
- php - 当我更新 1 个单元格时如何使用 X 可编辑数据表更改我的 update.php 将更改同一行中的 2 个单元格