【问题标题】:Is a PHP session variable shared across running scripts?PHP 会话变量是否跨正在运行的脚本共享?
【发布时间】:2010-12-02 11:48:14
【问题描述】:

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

【问题讨论】:

    标签: php session session-variables shared


    【解决方案1】:

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

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

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


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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2015-08-27
            • 1970-01-01
            • 1970-01-01
            • 2012-07-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-08-13
            • 1970-01-01
            相关资源
            最近更新 更多