是否在运行的脚本之间共享PHP会话变量?

时间:2009-09-29 22:36:03

标签: php session session-variables shared

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

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

会话中存储的数据基于每个客户端存储 - ID通常由cookie传递。

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

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


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

=> 1个用户,有2个请求=一个将被执行;那么,只有第二个将被执行;表示第一个设置的数据将在第二个设置中可见 - 只有在第一个完成后才会执行。

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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