8小时后,8小时更名为php会话丢失数据

时间:2013-03-06 14:01:45

标签: php session session-timeout

我的默认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

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

3 个答案:

答案 0 :(得分:3)

在PHP手册的session_set_cookie_params()页面上查看this answer,看看是否对您有所帮助!

答案 1 :(得分:0)

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

答案 2 :(得分: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');