【问题标题】:How session works? Where to save the session value? How to increase session life time?会话如何工作?在哪里保存会话值?如何增加会话寿命?
【发布时间】:2010-09-01 13:29:11
【问题描述】:

会话如何工作?在哪里保存会话值?如何增加会话寿命?

【问题讨论】:

    标签: php session session-variables session-timeout


    【解决方案1】:

    会话使 HTTP 成为一个虚拟的有状态协议,实际上它是无状态的。会话数据是特定于客户端的,但存储在服务器端,通常是文本文件中的序列化数组。 (可以使用会话处理程序在 PHP 中覆盖该行为,请参阅session_set_save_handler()。)

    服务器向客户端提供一个 cookie,其中包含一个标识符 (session id),该标识符唯一地标识该客户端。当发出 HTTP 请求时,包含会话 id 的 cookie 会随之发送,服务器会定位客户端的会话数据并加载它,从而恢复客户端的虚拟 状态。 (有时 id 不是通过 cookie 发送的,而是作为 GET 参数发送的,但这无关紧要。)

    在 PHP 中,您可以在使用 session_start() 创建或恢复会话之后,使用 $_SESSION 超全局访问会话状态。

    由于 HTTP 是无状态的,服务器无法知道客户端何时离开(关闭浏览器窗口、出去买饮料……)因此,唯一明智的做法是测量客户端离开的时间。自他们上次请求以来已经过去,如果超过阈值则假设他们已经离开。这段时间称为“会话超时”或“会话生存期”。您可以在php.ini 文件中或使用ini_set() 函数设置其默认值。有关详细信息,请参阅section on session directives in php.ini

    【讨论】:

      【解决方案2】:

      会话如何工作: http://www.tizag.com/phpT/phpsessions.php

      要增加会话生命周期,请使用带有session.gc_maxlifetime 属性的ini_set 函数:

       ini_set('session.gc_maxlifetime', '28800'); // Set maxlifetime to 4 hours
      

      注意:如果您在同一台服务器上有多个页面,每个页面都使用会话(相同或不同的命名会话,没关系),最小值任何这些脚本的 gc_maxlifetime 最终都会成为会话文件的有效生命周期。

      【讨论】:

        猜你喜欢
        • 2013-01-28
        • 2011-08-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多