gpt4 book ai didi

PHP session 阻塞,忽略 session_write_close

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:50:06 27 4
gpt4 key购买 nike

我正在尝试处理来自同一浏览器 session 的两个几乎同时发生的请求。

考虑以下最小示例:

<?php

session_start();

$sessionId = session_id();

session_write_close();

$file = sys_get_temp_dir() . '/lock_test';

if (!file_exists($file)) {

touch($file);

sleep(5);

unlink($file);

echo 'done! ' . $sessionId;

} else {

echo 'locked! ' . $sessionId;

}

第二个请求应该导致“锁定”输出,但它总是等待第一个请求完成,然后输出“完成”。

Xdebug 没有运行。 PHP 版本为 5.5。

编辑:

投票将其作为重复项关闭。链接的问题表明要解决此问题,请附加一个随机变量。所以我建议附加一个 requestTime 变量并将其设置为微秒的时间戳。

最佳答案

这种行为是可以的。如果两个请求共享同一个 session 并且您正在使用文件来存储 session 数据,则 PHP 需要 flock() session 文件以防止它被多个并发的请求破坏,这些请求将尝试写入文件。 (当然 PHP 将始终 flock() session 文件,但是有多个并发请求共享同一个 session ,您可以看到它的效果)

关于PHP session 阻塞,忽略 session_write_close,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24951884/

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