这是我的测试设置:
session_start();
if(!isset($_SESSION['bahhhh']))
$_SESSION['bahhhh'] = 0;
$_SESSION['bahhhh']++;
sleep(5);
die('a'.$_SESSION['bahhhh']);
我希望发生的是每次我点击该页面时,它都会返回一个不同的数字。
但如果我使用多个选项卡,并在第一个选项卡的 5 秒内刷新每个选项卡,它们都会返回相同的数字。 (这不是客户端缓存,因为 5 秒的延迟仍然很明显。)
为什么会这样,我该如何解决?
文件和数据库数据似乎也有同样奇怪的缓存问题,并且阻止我构建工作互斥体以防止一次多次运行相同的代码。
这是另一个更简单的例子:
echo microtime();
sleep(10);
运行这 3 次,每次间隔 2 秒,所有三个都返回相同的微秒。什么鬼?
最佳答案
默认情况下, session 数据在请求终止之前不会被保存。所以你的增量在 sleep 时不会被保存。如果你想过早地保存 session 结帐 session_write_close()
关于当同一个客户端同时多次请求同一个脚本时的 PHP session 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2359062/