据我了解,Drupal的会话生存时间受session.gc_maxlifetime
设置的限制,默认情况下设置为2.3天。
那么session.cookie_lifetime
设置为23天有什么用?
这是settings.php中的代码片段:
/**
* Set session lifetime (in seconds), i.e. the time from the user's last visit
* to the active session may be deleted by the session garbage collector. When
* a session is deleted, authenticated users are logged out, and the contents
* of the user's $_SESSION variable is discarded.
*/
ini_set('session.gc_maxlifetime', 200000);
/**
* Set session cookie lifetime (in seconds), i.e. the time from the session is
* created to the cookie expires, i.e. when the browser is expected to discard
* the cookie. The value 0 means "until the browser is closed".
*/
ini_set('session.cookie_lifetime', 2000000);
请 仅出于此问题而已将session.gc_probability
和都设置session.gc_divisor
为1。
因为您不想让Cookie神秘消失?您希望它在那里,以便可以优雅地使会话无效吗?这会给您造成实际问题吗?
—
Mołot
就是这样。但是,使cookie在40小时后失效,在服务器会话中51小时失效,不是更好的主意吗?我的意思是Cookie生存期小于服务器过期时间。
—
user5858 2014年
这在很大程度上是基于观点的,只有PHP作者才能真正说出。哦,这取决于您决定使用的会话处理程序。但是通常不,您不希望会话处于活动状态并且可以使用X个小时以上,并且由于缺少cookie而没有人可以使用它。这是浪费存储空间。保留cookie的时间越长,意味着几乎总是有人可以使用服务器上保留的会话数据,因此,没有会话数据就浪费了。
—
Mołot