1

全局 $_SESSION 数组中的会话变量是否跨脚本共享?假设我将一个值放入 $_SESSION['box'],另一个同时运行的脚本可以使用相同的键存储另一个值吗?他们会冲突吗?还是会根据来自客户端的会话 ID 管理实际变量值?

4

4 回答 4

5

如果您有相同的浏览器调用 2 个设置相同会话变量的页面,则最后处理的页面将设置该值。

如果您有 2 个单独的浏览器/用户访问相同的 2 个页面,他们将设置唯一值。

于 2009-09-29T22:40:14.017 回答
2

存储在会话中的数据存储在每个客户端的基础上——ID 通常由 cookie 传递。

这意味着您不能让两个用户访问同一个会话;这不是它存在的目的。

=> 2 个用户/浏览器/客户端 = 2 个不同的会话 = 2 个不同的值。


如果您询问同一个用户/客户端请求的两个脚本,并使用基于文件的会话(这是默认设置),则该用户的会话文件应该被第一个开始的脚本锁定,所以两个脚本不要' t 同时访问它——如果两个脚本试图同时修改会话,这可能会导致问题。

=> 1 个用户,有 2 个请求 = 一个将被执行;然后,只有第二个将被执行;意味着第一个设置的数据将从第二个可见 - 只有在第一个完成后才会执行。

于 2009-09-29T22:39:43.677 回答
1

如果我的理解正确,那么答案是后者:会话变量是根据分配给客户端的会话 ID 进行管理的。

“会话”是指用户/浏览器会话。新用户/浏览器、新会话、新变量。

于 2009-09-29T22:39:58.353 回答
1

它在每个用户会话中都是唯一的,但在该用户的会话中全局可用。如果一个脚本使用该键设置了一个变量,而同一用户执行的第二个脚本使用相同的键设置了一个变量,则仅针对该用户将其覆盖。

于 2009-09-29T22:41:24.513 回答