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