我正在使用codeigniter并且直到约会我使用基于cookie的会话..但现在会话的大小增加所以我需要将它们存储在数据库中..
我有多个数据库(超过3个)连接到我的应用程序。我如何专门使用ci_sessions表来存储会话?
当我说$ config ['sess_use_database'] = TRUE时;我的应用程序空白。显示平面白页。
这是因为从多个数据库连接中,codeigniter找不到确切的数据库来存储会话..
我怎样才能达到同样的目标? 感谢
答案 0 :(得分:3)
加载system/libraries/Session.php
时,如果指定,它还会加载要与会话一起使用的数据库。
// Are we using a database? If so, load it
if ($this->sess_use_database === TRUE AND $this->sess_table_name != '')
{
$this->CI->load->database();
}
理论上,这应该加载默认数据库。出于某种原因,这对我不起作用。我不得不修改代码以专门调用默认数据库。
default
数据库中提取的代码:// Are we using a database? If so, load it
if ($this->sess_use_database === TRUE AND $this->sess_table_name != '')
{
$this->CI->load->database('default', TRUE);
}
如果您想使用其他数据库,只需将default
更改为您要使用的数据库名称。
注意:如果在调用会话数据之前加载另一个数据库,则需要再次指定会话数据。会话将继续尝试从当前活动的数据库中提取。
答案 1 :(得分:2)
查看来自system/libraries/Session.php
的会话代码,可以看到它使用默认的$this->db
连接到数据库以存储会话。
尝试修改数据库组,使$this->db
正常工作。或者,您可以扩展Session.php
,以便可以将数据库组传递给它以存储会话。
希望这能让你开始朝着正确的方向前进。