Codeigniter数据库会话更新不一致

时间:2014-08-19 20:33:04

标签: database codeigniter session

在Codeigniter中,函数session->userdata($item)用于检索会话数据,Session类中此函数的定义是:

function userdata($item)
{
    return ( ! isset($this->userdata[$item])) ? FALSE : $this->userdata[$item];
}

现在的问题是:

每次执行脚本时,都会创建一个会话对象,并且检索到的数据是持久的,直到脚本结束。因此,如果另一个脚本例如更新会话值,则新值将存储在DB中,但其他会话对象中的检索数据不会更新,并且会使数据明显不一致和不准确。
我认为在许多情况下这可能是一个严重的问题。

这是对的,还是我在这里误解了什么?如果

1 个答案:

答案 0 :(得分:-1)

IN codeigniter会话对象是在类初始化期间创建的,每次用户发出请求时都会更新userdata(会话值)。您可以通过下面的代码查看整个会话对象:

print_r($this->session);

这将显示完整的会话对象,其中包含您在配置文件中为会话相关变量设置的所有必要配置,例如:

sess_encrypt_cookie, sess_use_database,sess_expiration ..etc

加上您当前的会话用户数据。现在,当您创建下一个请求时,会话值将被新值覆盖,否则旧值将被新值替换。因此,不存在数据重复或不一致的可能性。建议在会话中保存大量数据时使用会话表。