CodeIgniter会话,我的sess_time_to_update太频繁了吗? (不到15秒)

时间:2012-06-16 05:06:25

标签: codeigniter session-cookies codeigniter-2 php

我正在使用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)然后我知道用户可能已离开该页面。

这个概念运作良好,但我想知道是否经常更新会话表有任何看不见的问题?

谢谢!

2 个答案:

答案 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;