2010-12-13 5 views
8

Wie vergrößere ich die Größe des Session-Framework CodeIgniter?Größe der Sitzung in Codegeigner

Die Standardgröße ist 04 kb

+0

CodeIgniter verwendet Cookies, um Sitzungsinformationen zu speichern. Sie sollten in Betracht ziehen, eine Datenbank zu verwenden, um Informationen zu speichern, wenn Sie so große Datenmengen speichern. – Malachi

+0

danke, Ich habe mein Programm geändert, um einige Daten in Sitzung zu speichern – Pedro

Antwort

17

Es hat nichts mit der Codeignitersitzung zu tun, 4kb Daten sind die maximale Größe, die ein Cookie halten kann.

Um weitere Daten zu speichern, verwenden Sie eine Datenbank (siehe "Speichern von Sitzungsdaten in einer Datenbank" in http://codeigniter.com/user_guide/libraries/sessions.html).

+0

Das Kapitel "Speichern von Sitzungsdaten in einer Datenbank" erläutert nur, wie Validierungsdaten mit CI_Session gespeichert werden. Ihre "echten" Daten werden immer in einem Cookie gespeichert, so dass die Größe der Sitzung gleich ist: 4kb Siehe http://codeigniter.com/wiki/DB_Session/ oder http://codeigniter.com/wiki/OB_Session/ zum Speichern Daten in einer Datenbank –

+4

Nicht gute Übung, db wieder und wieder für gemeinsame Daten zu treffen –

8

keine großen Mengen an Daten in einer Sitzung lagern; Es wird bei jeder Anfrage in den Speicher des Skripts geladen.

Verwenden Sie stattdessen Dateien oder Datenbanken, indem Sie die Daten mithilfe der Sitzungs-ID mit der Sitzung verbinden.

3

Ja, Sie müssen eine Datenbank verwenden. Ja, das 4-KB-Limit ist ein Browser-Limit für Cookie-Größen, wie es vor einem Jahrzehnt von Netscape ausgewählt wurde. Es ist im Allgemeinen eine gute Methode, Cookies trotzdem klein zu halten, da jeder Anfrage-Header zu einem Objekt auf einem Server (für dieselbe Domain) diesen Cookie sendet.

Auch ein guter Tipp für CodeIgniter in Bezug auf Datenbanksitzung Tabellen, legen Sie den Typ auf MEMORY, so dass die Sitzungen im RAM statt der Festplatte gespeichert werden, die Ihre Website schneller (weniger Datenträger liest beim Zugriff auf die Website). Sie verlieren die Sitzungsdaten, wenn der Server neu gestartet wird, aber bis zu einem Neustart sind diese Informationen normalerweise nicht besonders nützlich.

SQL die CodeIgniter MySQL-Tabelle zu erstellen:

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-Optionen (in 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; 
1

@all es ist auch keine gute Praxis hit db wieder & wieder für gemeinsame Daten obwohl Session könnte dafür dienen. Ich empfehle, PHP Native Sitzung für diesen Zweck zu verwenden, siehe hier, wie Sie PHP Native Sitzungen in CI Replacing CI session with PHP Native Session verwenden können

+0

wenn ich dies versuchte, erhalte ich diesen Fehler: Ein Fehler wurde festgestellt Nicht vorhandene Klasse: Sitzung – dapidmini

Verwandte Themen