CodeIgniter – Ci hỗ trợ 2 cách lưu trữ session là lưu trữ dạng file và lưu trữ trong databse.
1. Lữu trữ session dạng file:
Trong file config.php (application/config/config.php) chúng ta chỉnh như sau:
$config['sess_driver'] = 'files'; //Hình thức lữu trữ session $config['sess_save_path'] =BASEPATH . 'cache/sessions/'; //Đường dẫn lưu session - Chỉ chấp nhận đường dẫn tuyệt đối
2. Lưu trữ session vào database:
Trong file config.php (application/config/config.php) chúng ta chỉnh như sau:
$config['sess_driver'] = 'database'; //Dạng lưu trữ session $config['sess_save_path'] = 'session_table_name'; //Tên bảng chứa session
Đương nhiên nếu chọn cách lưu trữ này thì cần tạo 1 table để lưu trữ:
Đối với MySQL:
CREATE TABLE IF NOT EXISTS `session_table_name` ( `id` varchar(128) NOT NULL, `ip_address` varchar(45) NOT NULL, `timestamp` int(10) unsigned DEFAULT 0 NOT NULL, `data` blob NOT NULL, KEY `ci_sessions_timestamp` (`timestamp`) );
Đối với PostgreSQL:
CREATE TABLE "session_table_name" ( "id" varchar(128) NOT NULL, "ip_address" varchar(45) NOT NULL, "timestamp" bigint DEFAULT 0 NOT NULL, "data" text DEFAULT '' NOT NULL ); CREATE INDEX "ci_sessions_timestamp" ON "ci_sessions" ("timestamp");
Tuy nhiên đối với cách này thì có một khuyết điểm là khi lưu trữ nhiều session sẽ dẫn đến thiếu không gian lưu trữ do bị giới hạn theo kiểu dữ liệu khi đó dẫn đến tình trạng mất session đột ngột.
nosomovo