Я использую codeigniter и до даты, когда я использовал сеансы на основе файлов cookie .. но теперь размер сеансов увеличивается, поэтому мне нужно их хранить в базе данных.
У меня есть несколько баз данных (более 3), подключенных к моему приложению … Как я могу использовать таблицу ci_sessions для хранения сеансов?
когда я говорю $ config ['sess_use_database'] = TRUE; мое приложение не работает. отображается плоская белая страница.
Это связано с тем, что из нескольких подключений к базе данных codeigniter не находит точную базу данных для хранения сеансов.
Как я могу достичь того же? благодаря
Когда загружается 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
по default
на имя базы данных, которую вы хотели бы использовать.
Примечание. Если вы загрузите другую базу данных до того, как вы вызовете данные сеанса, вам нужно будет снова указать свои данные сеанса. Сеанс будет продолжать пытаться извлечь из активной базы данных.
Рассматривая код сеанса из system/libraries/Session.php
, можно увидеть, что он использует по умолчанию $this->db
для подключения к базе данных для хранения сеансов.
Попробуйте изменить группы базы данных таким образом, что работает $this->db
. Кроме того, вы можете расширить Session.php
таким образом, чтобы вы могли передать ему группу базы данных для хранения сеансов.
Надеюсь, это поможет вам начать в правильном направлении.