2010-12-13 86 views
8

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

标准尺寸为04 KB

+0

CodeIgniter使用Cookie存储会话信息。如果您要存储如此大量的数据,您应该考虑使用数据库来存储信息。 – Malachi 2010-12-13 16:56:27

+0

谢谢, 我改变了我的程序,不保存会话中的一些数据 – Pedro 2010-12-14 13:46:53

回答

17

它什么都没有做与笨会话,4KB的数据是cookie可以容纳的最大尺寸。

持有更多的数据使用数据库(见http://codeigniter.com/user_guide/libraries/sessions.html“保存会话数据到数据库”)。

+0

“将会话数据保存到数据库”一章只解释了如何使用CI_Session存储验证数据。您的“真实”数据始终存储在cookie中,因此会话大小相同:4kb 请参阅http://codeigniter.com/wiki/DB_Session/或http://codeigniter.com/wiki/OB_Session/以供存储在数据库 – 2011-05-25 08:26:42

+4

不是好的做法数据DB再次与再次命中了通用数据 – 2012-09-22 05:23:23

8

不要存放大量的会话数据;它会在每个请求中加载到脚本的内存中。

改为使用文件或数据库,使用会话ID将数据连接到会话。

3

是的,您将需要使用数据库。是的,4kb限制是浏览器对cookie大小的限制,正如Netscape十年前所选择的。无论如何,保持cookie小是一个很好的做法,因为每个服务器上的对象(对于同一个域)的请求头都会发送这个cookie。

此外,CodeIgniter关于数据库会话表的一个好建议是将类型设置为MEMORY,以便会话存储在RAM而不是磁盘中,这会使您的站点更快(访问站点时磁盘读取更少)。当服务器重新启动时,会丢失会话数据,但在重新启动之前,该类信息通常不会太有用。

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) 
); 

CodeIgniter的PHP选项(在应用程序/配置/ 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

@all它甚至不是一个很好的做法,尽管Session可以为此服务,但是再次针对常见数据再次敲入db &。我建议使用PHP本地会话为此,在这里看到了如何使用PHP原始会议在CI Replacing CI session with PHP Native Session

+0

当我尝试这样做,我得到这个错误:出错遇到 不存在的类:会议 – dapidmini 2016-10-11 05:17:36