> 백엔드 개발 > PHP 튜토리얼 > 请教php中session的超时时间有关问题

请教php中session的超时时间有关问题

WBOY
풀어 주다: 2016-06-13 12:02:23
원래의
800명이 탐색했습니다.

请问php中session的超时时间问题

本帖最后由 webstaryoyo 于 2014-07-13 12:36:20 编辑 新手初学php,许多不了解的地方求教。以前学过asp,知道有个session.timeout可以设置超时时间,默认是20分钟。 但PHP里面没有找到类似设置会话超时时间的函数,不知如果php页面不刷新也就是对服务器端没有任何请求的情况下默认多久会话会超时失效?

在php.ini中有个session.cookie_lifetime 默认是0, 这个0和会话超时时间有关吗?0是不是代表只要浏览器不关闭,session就一直有效,不会超时?
另外,配置文件里还有个session.gc_maxlifetime = 1440,这个查手册是垃圾回收删除默认tmp目录下sess文件的超时时间,这个默认的1440秒也就是24分钟是会话超时时间吗?24分钟后,sess文件有可能被删除,那么意味着会话也失效了?可这个删除有个概率,默认1/1000,也就是很大可能没有删除,那如果没删除session就一直有效不会超时么? 也就是24分钟没刷新 会话也不一定就会超时失效吗?

求解。
------解决方案--------------------
session.gc_maxlifetime 不是针对 session 有效时间的,而是针对垃圾回收进程 gc 的
他告知 gc 进程,可以删除 session.gc_maxlifetime 秒之前修改过的临时文件

当然,只要 sessionid 对应的临时文件存在,则 session 就有效

要想自主控制 session 的行为,则需要自己编写处理代码。手册或网上的示例代码只是演示了基本写法,你需要根据你的需求进行扩展
------解决方案--------------------
session的超时时间并不是很准的。
如果需要很准,则在session中记录过期时间,当session文件不存在,或存在但过期时间超时,则当失败。

<br />if(isset($_SESSION['name'])){<br />    if($_SESSION['name']['expire']>time()){<br />       echo 'session 未过期';<br />   }else{<br />       echo 'session 未过期';<br />   }<br />}else{<br />    echo 'session 过期';<br />}<br />
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿