我正在使用CodeIgniter 2.1
我使用CodeIgniter的会话来处理用户是否登录。它运作良好。我正在将会话存储到数据库中。以下是我的一些会话变量:
$config['sess_expiration'] = 3600;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'user_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update'] = 15;
我正在使用如此低的sess_time_to_update
增量,因为我需要一种方法来监控用户是否已关闭或导航离开页面。由于CodeIgniter在每次更新时都会更新last_activity
列(15秒) - 为了检查空闲情况,我会在下面进行查询(我知道它不是正确的语言/语法):
if last_activity < (current_time - 25s)
然后我知道用户可能已离开该页面。
这个概念运作良好,但我想知道是否经常更新会话表有任何看不见的问题?
谢谢!
答案 0 :(得分:1)
if last_activity < (current_time - 25s)
仅表示在过去25秒内未发出任何请求,不一定是用户已离开。
除非用户每15秒发出一次请求,否则最后一个活动实际上不会每15秒更新一次。例如,如果我打开一个页面并将其读取五分钟,则最后一个活动将在下一个请求之前更新。
我想知道是否经常更新会话表时出现任何看不见的问题
更新会话表和刷新cookie只需要一点点开销。 15秒是一个非常小的时间框架,但如果这是你真正需要的那样应该没问题。
答案 1 :(得分:0)
如果您不想每五分钟更新一次会话,请执行以下更改。
转到session.php
中的System/libraries/Session.php
文件,并将所有参数设置为空白。它对我有用。
public $sess_encrypt_cookie;
public $sess_use_database;