У меня проблема … в $config['sess_expire_on_close'] = TRUE;
когда я закрываю браузер … сеанс по-прежнему сохраняется в базе данных. и я все еще вижу данные в столбце user_data
.
config.php
$config['sess_cookie_name'] = 'ci_session'; $config['sess_expiration'] = 2400; $config['sess_expire_on_close'] = TRUE; $config['sess_encrypt_cookie'] = FALSE; $config['sess_use_database'] = TRUE; $config['sess_table_name'] = 'ci_sessions'; $config['sess_match_ip'] = FALSE; $config['sess_match_useragent'] = TRUE; $config['sess_time_to_update'] = 300;
Нужна помощь … Цель состоит в том, чтобы показать всех онлайн-пользователей.
Я использую CI версии 2.1.3
Сервер никогда не знает о том, как пользователь закрывает свой браузер. 'sess_expire_on_close' рассматривает, будет ли cookie пользователя записываться и повторно использоваться при перезапуске браузера.
Чтобы обнаружить и завершить сеанс, вам нужно выполнить проверку, описанную в этом вопросе: javascript обнаружить браузер закрыть вкладку / закрыть браузер
и затем выполнить
$this->session->sess_destroy();
в кодеригере .
Закрытие сеанса не приведет к удалению данных в базе данных. Он в основном устанавливает значение для срока службы cookie сеанса равным 0, а это означает, что браузер удалит файл cookie, когда он закроется (форсирует новый сеанс). Запись в таблице базы данных не будет очищена до тех пор, пока сбор мусора не получит ее, поскольку по умолчанию браузер не может сделать «обратный вызов» на сервере, чтобы сообщить, что он закрывается, чтобы удалить сеанс запись в БД.
В ваших целях вы можете определить активных пользователей как пользователей с записями в БД, меньшими, чем ваш срок службы в возрасте.
Попробуйте настроить приложение / config / config.php
$ config ['sess_expiration'] = 0;
$ config ['sess_expire_on_close'] = ИСТИНА;
ЭТО должно быть ОК