我有一个问题..在$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
答案 0 :(得分:3)
服务器永远不知道用户关闭浏览器。 'sess_expire_on_close'表示在重新启动浏览器时是否会写入并重新使用用户的cookie。
要检测并结束会话,您必须执行此问题中概述的检查: javascript detect browser close tab/close browser
然后执行
$this->session->sess_destroy();
<{3>}中的。
答案 1 :(得分:1)
会话结束不会删除数据库中的数据。它基本上将会话cookie生存期的值设置为0,这意味着浏览器将在关闭时删除cookie(强制新会话)。在垃圾收集得到之前,数据库表中的条目不会被清除,因为默认情况下,浏览器无法向服务器发出“回调”以通知它正在关闭以便删除会话在DB中记录。
出于您的目的,您可能希望将活动用户定义为DB中的记录小于会话生命周期的用户。
答案 2 :(得分:-1)
尝试配置application / config / config.php
$ config [&#39; sess_expiration&#39;] = 0;
$ config [&#39; sess_expire_on_close&#39;] = TRUE;
这应该没问题