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