【发布时间】:2013-11-24 22:31:39
【问题描述】:
如果您熟悉 VB.NET 等编程语言,您就会知道有一个名为 Shared-Memory 的东西,它在不同的应用程序实例之间共享。我的问题是:会话变量在 PHP 中的行为是否相同?
假设这种情况:
我在我的网站上单击了两次链接(两个请求都使用相同的标头、相同的 cookie 但在不同的时间发送)。 $_SESSION['num'] 设置为 0 现在:
在 12:00:00.01 服务器收到第一个请求
在 12:00:00.03 第一个请求开始其会话
服务器在 12:00:00.04 秒收到请求
在 12:00:00.05 秒请求开始其会话。
在 12:00:00.06 第一个进程将 10 添加到 $_SESSION['num'] 的值。
在 12:00:00.07 第二个进程将 10 添加到 $_SESSION['num'] 的值。
12:00:00.09 两个过程都完成了。
现在,有两个可能的答案:$_SESSION['num'] 是 10 或 $_SESSION['num'] 是 20。哪个是答案?
【问题讨论】:
-
快速回答:没有。至于您的示例,这完全取决于每个请求是否共享相同的会话
-
@Phil 我说我点击了两次链接,这意味着他们都使用同一个会话!
-
啊,抱歉。 “点击”是一个如此模糊的术语。如果没有进一步的信息,例如使用了哪个浏览器、选项卡等,我不想贸然下结论。那么答案将是 20。
-
@Phil 我的意思是两个请求完全相同,这里唯一的区别是会话开始的时间!
-
您似乎对 session 是什么感到有些困惑。我建议你从这里开始 - php.net/manual/intro.session.php
标签: php session shared-memory