0

我的默认 PHP 会话是 30 分钟。

我得到了第一个代码:

<?php
session_set_cookie_params(28800);
session_name('TEST');
session_start();
session_regenerate_id(true);

$_SESSION['test'] = 'jam';
?>

而这第二个:

<?php
session_set_cookie_params(28800);
session_name('TEST');
session_start();
session_regenerate_id(true);

echo $_SESSION['test'];
?>

事实是,我的会话在 30 分钟没有活动后丢失。

定时示例:

00:00 : run first script
00:10 : run seconde script : i got "jam"
00:20 : run seconde script : i got "jam"
00:40 : run seconde script : i got "jam"
01:11 : run seconde script : session is lost

希望你能给我任何线索来解决这个问题。

4

3 回答 3

3

在 PHP Manual 中的页面上查看此答案,看看session_set_cookie_params()是否对您有帮助!

于 2013-03-06T14:06:01.730 回答
0

Cookie 的生命周期只是方程式的一部分。服务器端会话存储是另一个。确保它session.gc_maxlifetime也设置得足够高。

于 2013-03-06T14:07:07.843 回答
0

您只是设置 cookie 的生命周期,与会话数据的实际生命周期无关。如果您使用将会话保存到文件系统的默认会话保存处理程序,则会话数据的生命周期由session.gc_maxlifetime指令控制。您可以使用ini_set覆盖此值,如下所示:

ini_set('session.gc_maxlifetime', 28800);

请注意,如果您还有其他使用会话的脚本并且它们共享相同的会话保存路径,那么最小 gc_maxlifetime 将用于该目录中的所有会话。因此,如果您想更改 gc_maxlifetime 值,这通常意味着您还想指定自己的会话存储路径。您可以使用session_save_path函数执行此操作:

session_save_path('/path/to/your/sessions');
于 2013-03-06T14:09:51.967 回答