我的默认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
希望你能给我任何线索来解决这个问题。
答案 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');