在项目中我设置的session过期时间为30分钟(1800秒),我是把session存到redis里面的
当session还剩1000秒过期的时候我申请了一个接口,这个接口会向session中写入数据。等到接口调用完以后我发现session的剩余时间为1798秒,也就是说在我写入session后,session的过期时间又被重新设置成了1800秒,不知道小伙伴们有没有遇到过此问题
在项目中我设置的session过期时间为30分钟(1800秒),我是把session存到redis里面的
当session还剩1000秒过期的时候我申请了一个接口,这个接口会向session中写入数据。等到接口调用完以后我发现session的剩余时间为1798秒,也就是说在我写入session后,session的过期时间又被重新设置成了1800秒,不知道小伙伴们有没有遇到过此问题
session
就是这样的, session
原意是会话
, 会话
的有效期是指在用户最后一次请求开始多长时间无操作时就失效.
所以你的session
有效期是1800秒, 但是你在1000秒的时候又做了操作, 所以本次会话
并没有过期.
2 回答3.2k 阅读✓ 已解决
5 回答613 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
2 回答1.2k 阅读
1 回答1.1k 阅读
1 回答1.2k 阅读
自己回答一下。无论是php的session还是laravel中的session,他们的过期的机制是一样的。
以前一直以为如果把session的过期时间设置为1800s,那么session在经历1800以后就过期了。事实是,一旦我们的代码里有session_start()(在session.auto_start = 1 的时候自动调用),session的过期时间就会重新设置为1800s.也就是说如果我们一直使用session里的数据,无论读还是写,session都不会过期。一旦你不再读或者写入session一段时间,并且这段时间大与session的过期时间(我这里是1800s),那么session就过期了.
建议大家使用redis存储session然后就可以通过ttl来了解session的过期问题。