codeigniter中的会话大小

时间:2010-12-13 16:53:11

标签: php session codeigniter

如何增加会话框架CodeIgniter的大小?

标准尺寸为04 kb

4 个答案:

答案 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