鍍金池/ 問(wèn)答/PHP  HTML/ laravel session的過(guò)期問(wèn)題

laravel session的過(guò)期問(wèn)題

在項(xiàng)目中我設(shè)置的session過(guò)期時(shí)間為30分鐘(1800秒),我是把session存到redis里面的
當(dāng)session還剩1000秒過(guò)期的時(shí)候我申請(qǐng)了一個(gè)接口,這個(gè)接口會(huì)向session中寫入數(shù)據(jù)。等到接口調(diào)用完以后我發(fā)現(xiàn)session的剩余時(shí)間為1798秒,也就是說(shuō)在我寫入session后,session的過(guò)期時(shí)間又被重新設(shè)置成了1800秒,不知道小伙伴們有沒(méi)有遇到過(guò)此問(wèn)題

回答
編輯回答
孤客

session就是這樣的, session原意是會(huì)話, 會(huì)話的有效期是指在用戶最后一次請(qǐng)求開始多長(zhǎng)時(shí)間無(wú)操作時(shí)就失效.
所以你的session有效期是1800秒, 但是你在1000秒的時(shí)候又做了操作, 所以本次會(huì)話并沒(méi)有過(guò)期.

2017年10月11日 12:16
編輯回答
風(fēng)畔

自己回答一下。無(wú)論是php的session還是laravel中的session,他們的過(guò)期的機(jī)制是一樣的。
以前一直以為如果把session的過(guò)期時(shí)間設(shè)置為1800s,那么session在經(jīng)歷1800以后就過(guò)期了。事實(shí)是,一旦我們的代碼里有session_start()(在session.auto_start = 1 的時(shí)候自動(dòng)調(diào)用),session的過(guò)期時(shí)間就會(huì)重新設(shè)置為1800s.也就是說(shuō)如果我們一直使用session里的數(shù)據(jù),無(wú)論讀還是寫,session都不會(huì)過(guò)期。一旦你不再讀或者寫入session一段時(shí)間,并且這段時(shí)間大與session的過(guò)期時(shí)間(我這里是1800s),那么session就過(guò)期了.
建議大家使用redis存儲(chǔ)session然后就可以通過(guò)ttl來(lái)了解session的過(guò)期問(wèn)題。

2018年3月23日 20:37