3 回答

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
通常,您可以說(shuō)session.gc_maxlifetime指定自上次更改會(huì)話(huà)數(shù)據(jù)(而不是上次session_start調(diào)用?。┮詠?lái)的最長(zhǎng)生存時(shí)間。但是PHP的會(huì)話(huà)處理有點(diǎn)復(fù)雜。
因?yàn)闀?huì)話(huà)數(shù)據(jù)由垃圾收集器,其僅由稱(chēng)為除去session_start用的概率session.gc_probability合由devided session.gc_divisor。默認(rèn)值為1和100,因此垃圾收集器僅在所有session_start調(diào)用的1%中啟動(dòng)。這意味著,即使會(huì)話(huà)在理論上已經(jīng)超時(shí)(會(huì)話(huà)數(shù)據(jù)更改的時(shí)間超過(guò)了幾秒鐘前的session.gc_maxlifetime),會(huì)話(huà)數(shù)據(jù)的使用時(shí)間也可以更長(zhǎng)。
因此,我建議您實(shí)施自己的會(huì)話(huà)超時(shí)機(jī)制。請(qǐng)參閱我的答案,如何在30分鐘后使PHP會(huì)話(huà)到期?更多細(xì)節(jié)。

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果session.cookie_lifetime為0,則會(huì)話(huà)cookie一直存在,直到退出瀏覽器。
編輯:其他人提到了session.gc_maxlifetime設(shè)置。發(fā)生會(huì)話(huà)垃圾收集時(shí),垃圾收集器將刪除超過(guò)session.gc_maxlifetime幾秒鐘未訪問(wèn)的所有會(huì)話(huà)數(shù)據(jù)。要設(shè)置會(huì)話(huà)cookie的生存時(shí)間,請(qǐng)調(diào)用session_set_cookie_params()或定義session.cookie_lifetimePHP設(shè)置。如果此設(shè)置大于 session.gc_maxlifetime,則應(yīng)將其增加到session.gc_maxlifetime大于或等于Cookie生存期的值,以確保會(huì)話(huà)不會(huì)過(guò)期。
- 3 回答
- 0 關(guān)注
- 526 瀏覽
添加回答
舉報(bào)