2010-12-13 85 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