溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP會話控制之失效時間與過期回收機制

發(fā)布時間:2020-07-19 15:42:15 來源:網(wǎng)絡 閱讀:949 作者:gutops 欄目:web開發(fā)

PHP會話控制之失效時間與過期回收機制

session的生命周期

從session的初始化開始,直到注銷的這段時間稱之為sesssion生命周期。

設置session生命周期再php.ini中的相關參數(shù)

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時間,
    通過現(xiàn)在的時間減去最后訪問的時間,大于session.gc_maxlifetime,則認為
    該session已過期,但該文件并沒有被刪除。因為php5的session采用被動回收
    機制,過期的session是不會自己消失的,而是通過觸發(fā)回收機制來處理過期的
    session。下面兩個參數(shù)為回收機制的配置。

session.gc_probability = 1(默認值)
session.gc_divisor = 1000 (默認值)
    這兩個配置決定了gc的概率,默認為1/1000。也就是不是每個session信息都有
    100%的概率被系統(tǒng)當做垃圾來處理的。
    意味著每1000次請求會啟動一次gc回收session。
    因為啟動gc進程會影響php的執(zhí)行效率,所以頻率不易太頻繁。

注意:gc僅會處理session.save_path中的session文件。

注意:

1.如果session文件沒有及時回收,達到GB或更大級別的時候,就會影響該站點存
取session的速度,進而影響相關功能。

2.有一種情況,當某用戶的會話是活躍的,只是session文件一直未修改,但是系
統(tǒng)認為它是失效的,導致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']=''; 
?>

PHP中設置session永不過期

通過上述參數(shù)設置描述,可否想到如何能讓session用不過期?
1.session.cookie_lifetime = 99999999,前提是session.use_cookies = 1

2.session.gc_maxlifetime = 99999999
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI