CI默認(rèn)支持的session是以文件的方式保存到磁盤文件中,保存在指定的文件夾中,保存的路徑可以在配置文件中設(shè)置或者在程序中使用函數(shù)session_save_path()進(jìn)行設(shè)置,但是這么做有弊端,
第一就是保存到文件系統(tǒng)中,效率低,只要有用到session就會(huì)從好多個(gè)文件中查找指定的sessionid,效率很低。
第二就是當(dāng)用到多臺(tái)服務(wù)器的時(shí)候可能會(huì)出現(xiàn),session丟失問題(其實(shí)是保存在了其他服務(wù)器上)。
當(dāng)然了,保存在緩存中可以解決上面的問題,如果使用php本身的session函數(shù),可以使用session_set_save_handler()函數(shù)很方便的對(duì)session的處理過程進(jìn)行重新控制。如果不用php的session系列函數(shù),可以自己編寫個(gè)類似的session函數(shù),也是可以的,我現(xiàn)在做的這個(gè)項(xiàng)目就是這樣,會(huì)根據(jù)用戶的mid、登錄時(shí)間進(jìn)行求hash作為sessionId,每次請(qǐng)求的時(shí)候都必須加上sessionId才算合法(第一次登錄的時(shí)候是不需要的,這個(gè)時(shí)候會(huì)創(chuàng)建sessionId,返回給客戶端),這么做也很方便、簡(jiǎn)潔高效的。
SESSION保存在緩存中
CI將緩存保存到redis中,可以使用配置文件,對(duì)session的處理和保存做修改。
Redis 是一種存儲(chǔ)引擎,通常用于緩存,并由于他的高性能而流行起來,這可能也正是你使用 Redis 驅(qū)動(dòng)的原因。
缺點(diǎn)是它并不像關(guān)系型數(shù)據(jù)庫(kù)那樣普遍,需要你的系統(tǒng)中安裝了 phpredis 這個(gè) PHP 擴(kuò)展,它并不是 PHP 程序自帶的。 可能的情況是,你使用 Redis 驅(qū)動(dòng)的原因是你已經(jīng)非常熟悉 Redis 了并且你使用它還有其他的目的。
配置方法如下:
config/config.php
$config['sess_driver'] = 'redis'; $config['sess_save_path'] = 'tcp://localhost:6379';
前提是你服務(wù)器需要安裝redis才可以!
使用這個(gè)會(huì)影響memcache緩存嗎