размер сессии в коде - PullRequest
       2

размер сессии в коде

9 голосов
/ 13 декабря 2010

Как мне увеличить размер каркаса сеанса CodeIgniter?

Стандартный размер 04 кб

Ответы [ 4 ]

17 голосов
/ 13 декабря 2010

Это не имеет никакого отношения к сеансу codeigniter, 4 КБ данных - это максимальный размер, который может содержать cookie.

Для хранения дополнительных данных используйте базу данных (см. «Сохранение данных сеанса в базе данных» в http://codeigniter.com/user_guide/libraries/sessions.html).

8 голосов
/ 13 декабря 2010

Не хранить большие объемы данных в сеансе;он будет загружен в память скрипта при каждом запросе.

Вместо этого используйте файлы или базы данных, подключив данные к сеансу с помощью идентификатора сеанса.

3 голосов
/ 13 декабря 2010

Да, вам нужно будет использовать базу данных. Да, ограничение в 4 КБ - это ограничение браузера для размеров файлов cookie, установленное Netscape десять лет назад. Как правило, в любом случае рекомендуется сохранять файлы cookie небольшими, поскольку каждый заголовок запроса к объекту на сервере (для того же домена) будет отправлять этот файл cookie.

Кроме того, хороший совет для CodeIgniter относительно таблиц сеансов базы данных: установите тип MEMORY, чтобы сеансы сохранялись в оперативной памяти, а не на диске, что ускоряет работу вашего сайта (меньше обращений к диску при доступе к сайту). Вы потеряете данные сеанса при перезагрузке сервера, но в ожидании перезагрузки такая информация обычно не слишком полезна.

SQL для создания таблицы CodeIgniter MySQL:

CREATE TABLE IF NOT EXISTS  `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL,
ip_address varchar(16) DEFAULT '0' NOT NULL,
user_agent varchar(50) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text NOT NULL,
PRIMARY KEY (session_id)
);

Параметры PHP CodeIgniter (в приложении / config / config.php):

$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;
1 голос
/ 22 сентября 2012

@ все это даже не хорошая практика снова и снова нажимать на db для общих данных, хотя Session может послужить этому.Для этой цели я рекомендую использовать собственный сеанс PHP. Узнайте, как можно использовать собственные сеансы PHP в CI Замена сеанса CI на собственный сеанс PHP

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