8小时重命名的PHP会话30分钟后丢失数据


8hours renamed php session lost data after 30 minutes

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

希望你能给我一些建议来解决这个问题。

看一下PHP手册中session_set_cookie_params()页的答案,看看是否对您有所帮助!

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

您只是在设置cookie的生存期,这与会话数据的实际生存期无关。如果使用将会话保存到文件系统的默认会话保存处理程序,则会话数据的生存期由会话控制。gc_maxlifetime指令。你可以用ini_set覆盖这个值,像这样:

ini_set('session.gc_maxlifetime', 28800);

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

session_save_path('/path/to/your/sessions');