我使用的是CI 1.7.3,下面是我的设置:
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
我不能想出导致会话过期的步骤,它看起来只是随机的,对用户来说非常令人沮丧。
我有同样的问题。CodeIgniter会话库中存在一个设计缺陷,当快速连续提交两个或多个请求时(例如在执行多个AJAX请求时),会导致会话意外破坏。我已经提交了一个bug报告,在这里更详细地解释了:https://github.com/EllisLab/CodeIgniter/issues/154
现在,您可以通过设置sess_use_database = FALSE来实现一个解决方法。希望有人能尽快解决这个问题。