会议提前结束

时间:2012-08-29 18:20:38

标签: php session

我们最近从运行xamp的Windows 2003服务器迁移到运行带有PHP 5.3.3版的apache的Centos服务器。

最初,问题是用户在大约24分钟后才被注销,所以我更改了INI变量session.save_path,这解决了问题。但是,有些用户仍然会定期从我们的网站注销,似乎是随机的。它发生在不同时间使用不同浏览器的多个用户。有时候让页面闲置,但有时候从一个页面浏览到另一个页面。

以下是与会话相关的INI设置:

    session.save_handler = files  
    session.save_path = "/var/sessions"  
    session.use_cookies = 1  
    ;session.cookie_secure =  
    ;session.use_only_cookies = 1  
    session.name = PHPSESSID  
    session.auto_start = 0  
    session.cookie_lifetime = 86400  
    session.cookie_path = /  
    session.cookie_httponly =  
    session.serialize_handler = php  
    session.gc_probability = 1  
    session.gc_divisor = 1000  
    session.gc_maxlifetime = 86400  
    session.bug_compat_42 = Off  
    session.bug_compat_warn = On  
    session.referer_check =  
    session.entropy_length = 0  
    session.entropy_file =  
    ;session.entropy_length = 16  
    session.cache_limiter = nocache  

起初我认为这可能是浏览器中cookie的一个问题,因为其中一个用户将其cookie设置为永不过期,即使代码将cookie设置为在24小时后过期。但是,在删除cookie并让他重新登录后,它会将cookie正确设置为24小时,并且他有同样的过早登出问题。

我创建了一个cron作业脚本,每天早上4点删除所有会话,因为会话已经移出tmp目录。

我今天发现服务器上的会话没有被删除,但是当用户重新登录时,正在创建具有新会话ID的新会话,即使他们在服务器上仍然有现有会话。 / p>

非常感谢任何协助。

1 个答案:

答案 0 :(得分:0)

问题原因是我的服务器删除了会话后,我的Cookie过期了。

我有一个脚本设置,每天凌晨4点从服务器手动删除会话,但我的cookie设置为持续24小时。因此,即使用户登录到网站并在服务器上创建了新会话,cookie也没有更新到期时间。

我将Cookie持续时间减少到12小时,以便Cookie在下次用户需要登录之前始终过期,并且问题已经消失。