如果应用程序超过给定的idel时间,如何使用php销毁会话

如果应用程序超过给定的idel时间,如何使用php销毁会话,php,Php,在我的程序中,出于安全目的,如果应用程序超过其空闲时间,则有必要销毁会话变量 //以秒为单位设置超时时间 $300 //检查一下 已设置$\u会话['timeout'] 如果(isset($\u会话['timeout'])){ $session_life=时间()- $\u会话['start'];如果($SESSION\u life) 美元(非活动) {session_destroy();头(“Location:logout.php”);} $\会话['timeout']=time() 但是这段

在我的程序中,出于安全目的,如果应用程序超过其空闲时间,则有必要销毁会话变量

//以秒为单位设置超时时间 $300

//检查一下 已设置$\u会话['timeout'] 如果(isset($\u会话['timeout'])){ $session_life=时间()- $\u会话['start'];如果($SESSION\u life)

美元(非活动) {session_destroy();头(“Location:logout.php”);} $\会话['timeout']=time()

但是这段代码每5分钟刷新一次会话变量,我想知道如果系统处于空闲时间,如何销毁会话变量。另外,请告诉我,如果我破坏会话变量,会产生任何其他问题。提前感谢

@编辑:
由于会话数据在会话超时后被视为垃圾,因此实际上不需要执行任何操作。这应该足以确保定期清理垃圾。因此,只需调用创建虚拟会话的页面(每分钟一次)就足够了。垃圾收集器频率也可以在php.ini中配置

但是,您可以通过监视会话(在文件/数据库/内存中)轻松验证这一点

试试这个:

  • 编辑php.ini-将session.cookie_寿命设置为以秒为单位的预期值(5分钟为300秒)
  • 重新启动apache服务器
  • 登录
  • 5分钟后测试会话变量(应已过期)
记住,从文档中:

默认值“0”表示cookie在浏览器关闭之前保持活动状态。如果未在php.ini中设置,这也是默认值


因此,您必须将其设置为:默认值为零-因此它将永远不会过期,除非有人关闭浏览器窗口。

请将代码缩进4个空格,而不是使用
。这是工具栏中的
{}
按钮,而不是
按钮。但取消设置功能有一个缺点,即清除所有会话,这在某些情况下可能并不理想。它不会清除所有会话。只是当前会话中的所有变量。为什么php应该允许页面取消设置其他用户的数据?我承认,php文档在这里听起来有点误导。