【发布时间】:2010-12-13 16:53:11
【问题描述】:
如何增加会话框架 CodeIgniter 的大小?
标准大小为 04 kb
【问题讨论】:
-
CodeIgniter 使用 cookie 来存储会话信息。如果您要存储如此大量的数据,您应该考虑使用数据库来存储信息。
-
谢谢,我将程序更改为不在会话中保存一些数据
标签: php session codeigniter
如何增加会话框架 CodeIgniter 的大小?
标准大小为 04 kb
【问题讨论】:
标签: php session codeigniter
这与codeigniter会话无关,4kb的数据是cookie可以容纳的最大大小。
要保存更多数据,请使用数据库(请参阅http://codeigniter.com/user_guide/libraries/sessions.html 中的“将会话数据保存到数据库”)。
【讨论】:
不要在会话中存储大量数据;它将在每次请求时加载到脚本的内存中。
改用文件或数据库,使用会话 ID 将数据连接到会话。
【讨论】:
是的,您需要使用数据库。是的,4kb 限制是浏览器对 cookie 大小的限制,这是 Netscape 十年前选择的。无论如何,保持 cookie 很小通常是一个好习惯,因为每个请求标头到服务器上的对象(对于同一域)都会发送此 cookie。
另外,关于数据库会话表的 CodeIgniter 的一个很好的提示,将类型设置为 MEMORY,以便会话存储在 RAM 而不是磁盘中,这使您的站点更快(访问站点时磁盘读取更少)。当服务器重新启动时,您会丢失会话数据,但在重新启动之前,这类信息通常并没有太大用处。
创建 CodeIgniter MySQL 表的 SQL:
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)
);
CodeIgniter PHP 选项(在 application/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;
【讨论】:
@all 虽然 Session 可以为此服务,但再次点击 db 以获得公共数据甚至不是一个好习惯。我建议为此目的使用 PHP Native 会话,请参阅此处如何在 CI Replacing CI session with PHP Native Session 中使用 PHP Native Sessions
【讨论】: