当移动浏览器从睡眠中唤醒时会话丢失


session lost when mobile browser wakeup from sleep

我遇到一个奇怪的问题。在我的移动站点中,用户将手机休眠约30分钟后,尝试重新使用该网站,会话似乎丢失了。

改变session.cookie_lifetime似乎没有任何影响。

可以通过增加session.gc_maxlifetime的值来解决这个问题吗?

这里是完整的代码

header("Access-Control-Allow-Origin: http://www.private.net");
header("Access-Control-Allow-Credentials: true");
ini_set("session.gc_maxlifetime", 60*60*24);
session_set_cookie_params(60*60*24*7, "/", COOKIE_DOMAIN);
session_start();

从你提供的代码中,我假设你正在使用默认的会话存储,这意味着会话数据存储在文件系统中,cookie只包含PHPSESSID(会话ID)。为了在使用文件系统时更长时间地存储会话数据,您需要相应地设置session.gc_maxlifetime配置。您可以在php.iniini_set()中执行此操作:

ini_set("session.gc_maxlifetime", 60*60*24*7);

如果你想增加Cookie的生存期(默认为0,意味着当浏览器关闭时它会被删除),你可以设置session.cookie_lifetime,或者再次使用ini_set(),或者就像你在你的例子中做的那样。