對於登陸註冊量比較大的網站,session直接寫入文件。對於登陸訪問量比較大的網站session本身就比較多,如果提高session的讀取速度可以提高訪問速度和減輕服務器一定的負擔。而memcached可以做到這一點。修改的主要有兩個參數:session.save_handler爲memcache和session.save_path爲tcp://ip:port
方式一:修改php.ini的配置文件
方式二:通過ini_set()函數設置對本頁面有效的session配置ini_set(“session.save_handler”,“memcache”)ini_set("session.save_path","tcp://ip:port")
memcached和session的區別:
在讀寫速度上會比文件快很多,而且在多個服務器需要共用 session 時會比較方便,將
這些服務器都配置成使用同一組 memcached 服務器就可以,減少了額外的工作量。
其缺點是 session 數據都保存在 memory 中,一旦當機,數據將會丟失。但對 session 數據來
說並不是嚴重的問題,其本身就是臨時性數據。 session 數據都保存在 memory 中,持久化方面有所欠缺,但對 session 數據來說也不是很大的問題。
當把memcached服務器放在公網上,就不安全了,可以放置在局域網中,通過防火牆拒絕對memcached服務的端口的直接請求,必須通過Apache服務器間接地訪問memcached的服務。
當然需要注意的地方有::
1、memcache的內存應該足夠大,這樣不會出現用戶session從Cache中被清除的問題(可以關閉memcached的對象退出機制)。
2、如果session的讀取比寫入要多很多,可以在memcache前再加一個Oscache等本地緩存,減少對memcache的讀操作,從而減小網絡開銷,提高性能。
3、如果用戶非常多,可以使用memcached組,通過set方法中帶hashCode,插入到某個memcached服務器//暫時不能理解
對於session的清除有幾種方案:
(1)可以在凌晨人最少的時候,對memcached做一次清空。(簡單)
(2)保存在緩存中的對象設置一個失效時間,通過過濾器獲取sessionId的值,定期刷新memcached中的對象.長時間沒有被刷新的對象自動被清除.(相對複雜,消耗資源)