您好,登錄后才能下訂單哦!
從session的初始化開始,直到注銷的這段時間稱之為sesssion生命周期。
session.save_path
設置保存的session文件路徑。
session.use_cookies = 1
設置為1時,利用cookie來傳遞sessionid
session.cookie_lifetime = 0 (默認為0)
設置sessionid在客戶端cookie存儲的時間,默認為0,即關閉瀏覽器就失效。
session.gc_maxlifetime = 1440(默認值 單位為秒)
設置session存活時間
原理:每次GC啟動后,會通過stat得到session文件最后訪問的unix時間,
通過現在的時間減去最后訪問的時間,大于session.gc_maxlifetime,則認為
該session已過期,但該文件并沒有被刪除。因為php5的session采用被動回收
機制,過期的session是不會自己消失的,而是通過觸發回收機制來處理過期的
session。下面兩個參數為回收機制的配置。
session.gc_probability = 1(默認值)
session.gc_divisor = 1000 (默認值)
這兩個配置決定了gc的概率,默認為1/1000。也就是不是每個session信息都有
100%的概率被系統當做垃圾來處理的。
意味著每1000次請求會啟動一次gc回收session。
因為啟動gc進程會影響php的執行效率,所以頻率不易太頻繁。
注意:gc僅會處理session.save_path中的session文件。
1.如果session文件沒有及時回收,達到GB或更大級別的時候,就會影響該站點存
取session的速度,進而影響相關功能。
2.有一種情況,當某用戶的會話是活躍的,只是session文件一直未修改,但是系
統認為它是失效的,導致session文件被‘誤刪除’。怎么能避免這種情況呢?
<?php
//手動去修改session文件的最后修改時間。
if(!isset($_SESSION['last_access'])||(time()-$_SESSION['last_access'])>60){
$_SESSION['last_access'] = time();
}
?>
反之手動設置過期該怎么辦呢?
<?php
unset($_SESSION['last_access']);
//也可以這樣 $_SESSION['last_access']='';
?>
通過上述參數設置描述,可否想到如何能讓session用不過期?
1.session.cookie_lifetime = 99999999,前提是session.use_cookies = 1
2.session.gc_maxlifetime = 99999999
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。