Как хранить сеансы базы данных в CodeIgniter с несколькими базами данных? - PullRequest
2 голосов
/ 18 августа 2011

Я использую codeigniter и до даты я использовал сеансы на основе файлов cookie ... но теперь размер сессий увеличен, поэтому мне нужно хранить их в базе данных ..

У меня несколько баз данных (более 3)подключен к моему приложению ... Как я могу специально использовать таблицу ci_sessions для хранения сеансов?

, когда я говорю $ config ['sess_use_database'] = TRUE;мое приложение гаснет.отображается плоская белая страница.

Это связано с тем, что из нескольких подключений к базе данных codeigniter не находит точную базу данных для хранения сеансов ..

Как можно добиться того же?Спасибо

Ответы [ 2 ]

3 голосов
/ 26 сентября 2012

Прошло много времени с тех пор, как этот вопрос был задан, но я чувствую, что нужен окончательный ответ.

Начиная с CodeIgniter 2.1.2

Когда загружено system/libraries/Session.php, он также загружает базу данных для использования с сессиями, если указано.

Используемый код по умолчанию (Строка 85):

// 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);
}

Если вы хотите использовать другуюdatabase, просто замените default на имя базы данных, которую вы хотели бы использовать.

Примечание: Если вы загрузите другую базу данных перед вызовом данных сеанса, вынужно снова указать данные вашего сеанса.Сеанс продолжит попытки извлечения из активной в данный момент базы данных.

2 голосов
/ 18 августа 2011

Глядя на код сеанса из system/libraries/Session.php, можно увидеть, что он использует значение по умолчанию $this->db для подключения к базе данных для хранения сеансов.

Попробуйте изменить группы баз данных так, чтобы $this->db работал. В качестве альтернативы вы можете расширить Session.php так, чтобы вы могли передать ему группу баз данных для хранения сеансов.

Надеюсь, это поможет вам начать в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...