会话必须同步。当A写入/保存session B或another A等待时。这对于基于文件的会话处理来说是必须的。
但是一旦A加载了会话(但现在保存了它的修改)B也应该被允许加载相同的会话。因为加载将打开文件并将文件内容放入内存并关闭。
是否有任何理由在整个A加载会话并A保存会话期间阻止所有其他脚本。不能仅使用保存处理程序进行同步吗?
因此,如果两个 PHP 脚本共享同一个会话,则它们永远不能同时工作。
例如seslock.php
<?php
header('Content-Type: text/plain');
session_start();
if(isset($_GET['wait'])){
sleep(30);
echo "waiting\n";
}else{
echo "No Waiting\n";
}
?>
done
访问seslock.php将立即响应,但seslock.php?wait 需要 30 秒才能响应。但问题是,如果您要求seslock.php?wait第一个且仅seslock.php第二个。事件non-sleep块也会要求您等待 30 秒。
为什么它阻塞不是我的问题。我问为什么会阻塞start to save?而不是阻塞only save?