gpt4 book ai didi

php - 服务器每个 session 只允许一个请求

转载 作者:可可西里 更新时间:2023-11-01 00:18:12 25 4
gpt4 key购买 nike

场景:

xyz.com 的所有页面都使用 session 来检查我是否登录并显示自定义内容。我在 iMac 上使用 Firefox 登录到 xyz.com。现在,当我尝试同时访问 xyz.com/page1.php 和 xyz.com/page2.php 时,直到 page1 加载 page2 才被处理。

代码示例

xyz.com/contains(链接):

/* session check code here */
<a href="http://xyz.com/page1.php" rel="noreferrer noopener nofollow">Page1</a>
<a href="http://xyz.com/page2.php" rel="noreferrer noopener nofollow">Page2</a>

xyz.com/page1.php 包含:

/* session check code here */
echo "Hello";
flush();
sleep(5);
echo "done";

xyz.com/page2.php 包含:

/* session check code here */
echo "Second Page";
/* {insert code} to log time() to log.txt */

测试

这就是我所做的。我登录到 shell 并保持此命令运行:

user@xyz.com [~/public_html]# tail -f log.txt

在我的浏览器 (Firefox) 中(在 xyz.com 上),我在选项卡中打开了 page1 和 page2 的多个实例。如果你能看到,page1 至少需要 5 秒来加载。现在,在第 1 页加载之前,对第 2 页的请求处于挂起状态。它根本没有被处理。我怎么知道的? page2 末尾的代码将访问时间记录到我正在监视的文件中。让我们考虑以下情况:

请求被触发(按顺序)1. page1.php2. page2.php3. page2.php4. page1.php5. page1.php6.page2.php

结果(大约)

1237961919 <-- #2
1237961920 <-- #3
1237961931 <-- #6

预期的(大约)

1237961915 <-- #2
1237961915 <-- #3
1237961915 <-- #6

^假设所有调用同时触发

观察

虽然正在处理调用,但我显然也无法访问 xyz.com(是另一个请求)。但是,如果我在另一个浏览器 (Safari) 中打开它,它运行良好。那是因为它是另一个 session ?

可能的原因

  1. 服务器有一定的安全措施吗?

    I am more of a coder but if someone can give pointers, I can check the server (VPS) to see if apache/php is misconfigured.

  2. 我没有正确处理 session ?

    Does it matter? Shouldn't the second request be processed as a different thread?

  3. 外星人正在控制我的 VPS。

    Ok, kidding. I am just tired of tracing this issue. Would really appreciate if anyone has any clue what could be going wrong here.

最佳答案

您的服务器正在使用基于文件的 session 。当一个请求处于挂起状态时, session 文件将被锁定,服务器将对任何以后尝试使用同一 session 的请求进行排队。

切换到数据库存储的 session ,你会没事的。

关于php - 服务器每个 session 只允许一个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/680327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com