如何增加会话框架CodeIgniter的大小?
标准尺寸为04 kb
答案 0 :(得分:17)
它与codeigniter会话无关,4kb的数据是cookie可以容纳的最大大小。
要保存更多数据,请使用数据库(请参阅http://codeigniter.com/user_guide/libraries/sessions.html中的“将会话数据保存到数据库”)。
答案 1 :(得分:8)
不要在会话中存储大量数据;它会在每次请求时加载到脚本的内存中。
使用文件或数据库,使用会话ID将数据连接到会话。
答案 2 :(得分:3)
是的,您需要使用数据库。是的,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;
答案 3 :(得分:1)
@all再次点击db并不是一个好习惯。虽然Session可以为此服务,但是再次提供常见数据。我建议使用PHP Native会话来实现此目的,请参阅此处如何在CI中使用PHP本机会话Replacing CI session with PHP Native Session