PHP会话意外到期

Mat*_*ier 6 php session

我在这里不知所措.我在楼上有一组特定的用户,他们的会话似乎完全随机到期.这不仅仅是当他们离开网站一段时间,它可以在他们浏览时过期.对我和我们的大多数用户来说一切正常.这不是一个浏览器问题,我们有FF的人和所有IE版本都正常运行,FF和IE中的人不起作用.

gc_maxlifetime43200,并且垃圾收集是一个疯狂的低1/1000(不是那应该重要).服务器上是否有其他东西可以随机删除我们的某些会话?我该怎么检查?这仍然无法解释为什么只有这一特定群体似乎受到影响.

我有一些与默认设置不同的会话设置:

session.gc_maxlifetime = 43200
session.gc_divisor = 1000
session.save_path = /var/lib/php/session
session.use_only_cookies = Off
session.bug_compat_42 = Off
Run Code Online (Sandbox Code Playgroud)

前三个我不担心,但最后两个可能导致这种行为吗?我实际上并没有通过URL发送cookie,所以我没有充分的理由关闭use_only_cookies.我不能保证在我到达这里之前制作这个应用程序的不合适的人没有利用这个bug_compat_42东西来设置会话变量,但是再次,我希望这个问题不那么随机.

编辑:

在进一步调查中,我发现Session根本没有被销毁,但最终用户正在获得一个新的会话ID.旧会话在服务器上仍然完好无损,但在浏览时会随机启动新会话.

Mat*_*ier 5

这里的问题原来是他们的浏览器将会话cookie设置为过早到期.我已经解决了这个肮脏,肮脏的黑客的问题,你永远不应该使用它.我并不为此感到骄傲,但如果这对任何事情都有所启发,请随意让我进去:

if (!headers_sent()) {
    if ($_COOKIE["PHPSESSID"] != "") {
        setcookie("PHPSESSID", $_COOKIE["PHPSESSID"], time()+43200, "/", ".mydomain.com");
    }
}
Run Code Online (Sandbox Code Playgroud)