После небольшого использования (25 мин - 1,5 часа) в моей системе пользователи получают удар. По какой-то причине мои сеансы красивы. Я думаю, что cookie на стороне клиента как-то теряет идентификатор сеанса и создает новый. Я сохраняю данные сеанса на Database
.
Это моя сессия conf:
$config['sess_cookie_name'] = 'v2Session';
$config['sess_expiration'] = 32400; //session will be 9 hours, for a shift.
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
Теперь, когда я смотрю в БД, я вижу несколько сеансов для каждого пользователя. Каждый удар означает новый сеанс, и старый сеанс не удаляется до истечения срока его действия. Когда сеанс "отключается", пользователям необходимо снова войти в систему.
Любая помощь по устранению неполадок будет оценена.
EDIT:
Итак, после некоторых исследований я заметил, что сеансы умирают, потому что session_id
, которые сохраняются в cookie
и session_id
, которые сохраняются в Database
, не совпадают. Я подозреваю, что это происходит, когда пользователь загружает по 2 страницы на другой вкладке/окне. Одна загрузка происходит только тогда, когда сеанс обновляет session_id
и вторую нагрузку (которая убивает сеанс) старым session_id
. Система ищет сеанс в Database
и не находит его. Результат: Удар из системы + безумный пользователь.
Кто-нибудь испытал это? и есть ли у кого-нибудь идея о том, как это исправить?