我想明白爲什麼CI的會話表結構有三個主鍵:session_id
,ip_address
和user_agent
。笨的會話表結構
CREATE TABLE IF NOT EXISTS `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL,
ip_address varchar(45) DEFAULT '0' NOT NULL,
user_agent varchar(120) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text NOT NULL,
PRIMARY KEY (session_id, ip_address, user_agent),
KEY `last_activity_idx` (`last_activity`)
);
請解釋一下你可以的最多,我也想聽聽有關改善這種結構的建議。爲什麼是ip_address
和user_agent
primary_keys,而不僅僅是索引?有什麼不同?
另一個信息,這張表爲每個用戶訪問系統添加一行,所以它非常臃腫。
編輯:想到另一個問題。爲什麼我會關心用戶代理匹配?
是的,每個不同的用戶都有一個行。另外,他們還有另外一些行是舊的會話數據,這是垃圾收集的,對嗎? – enapupe
所以,如果我決定在我的應用程序中我不匹配IP_ADDRESS,我應該從PK中刪除它嗎? – enapupe
因爲許多用戶有動態的IP地址,經常變化,當你的調制解調器resyncs,重新啓動等,這就是爲什麼我通常不會匹配IP_ADDRESSes會議。這是多少個大網站的做法,對吧? Facebook,google .. – enapupe