session.gc_maxlifetime 和 session.cookie_lifetime 之间的问题

Posted

技术标签:

【中文标题】session.gc_maxlifetime 和 session.cookie_lifetime 之间的问题【英文标题】:The question between session.gc_maxlifetime and session.cookie_lifetime 【发布时间】:2011-07-27 13:49:17 【问题描述】:

我在 *** 中的第一个问题。提前致谢!

我对 php 会话机制感到很困惑。我已经通过PHP - ini_set('session.gc_maxlifetime', 5) - Why it doesn't end the session? 了解了 session.gc_maxlifetime。但是我还是不知道 session.gc_maxlifetime 和 session.cookie_lifetime 的区别。

问题: 如果 session.cookie_lifetime 的时间到了会发生什么?会话cookie会直接从客户端计算机中删除吗?

我需要弄清楚这个问题,然后继续问更多问题。

【问题讨论】:

【参考方案1】:

cookie 生存期被传输到客户端。如果 cookie 的生命周期已过,客户端通常会删除它。所以它是客户端。即使在 cookie 消失后,会话也可以处于活动状态,因为您可以再次创建相同的 cookie,扩展其生命周期,或通过 uri 传输会话 ID。

希望有帮助!

【讨论】:

谢谢!你的意思是如果 session.gc_maxlifetime 没有超时,即使客户端的会话 cookie 被删除,这个会话也会通过向客户端发送一个新的会话 cookie 来自动工作? 没有。如果 sessionid 不再存储在客户端,服务器将无法识别客户端,因此您无法在同一会话中工作。将生成一个新会话。 哇!我得到了它!谢谢朋友! 感谢您解释 session_timeout,但您没有解释 gc_maxlifetime。【参考方案2】:

session.gc_maxlifetime 是以秒为单位的时间,在此之后您的会话数据可能被视为垃圾数据。换句话说,您可以说这是一个未使用的 PHP 会话将保持活动状态的时间。

session.cookie_lifetime 是以秒为单位的会话 cookie 的生存时间,无论会话是否处于活动状态。因此 cookie 会一直保持活动状态,直到给定的时间过去

见: http://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime https://blogs.oracle.com/oswald/entry/php_session_gc_maxlifetime_vs

【讨论】:

您链接的文章确实有帮助,尤其是这些陈述: 1. session.gc_maxlifetime - “...只要他的点击之间的时间不超过 1440 秒。超时值。” 2. session.cookie_lifetime - “这个值间接定义了一个会话的“绝对”最大生命周期,不管用户是否活跃。如果这个值设置为60,每个会话在一个小时后结束。”

以上是关于session.gc_maxlifetime 和 session.cookie_lifetime 之间的问题的主要内容,如果未能解决你的问题,请参考以下文章

session.gc_maxlifetime 是不是仍基于上次修改日期?

PHP如何增加session.gc_maxlifetime?更改 php.ini 不起作用

session垃圾回收机制

php--session垃圾回收机制

php session垃圾回收机制

如何严格设置php中session过期时间?