清理 php 会话文件

新手上路,请多包涵

在我的网站上,我使用 PHP 会话。会话信息存储在我的 ./session 路径中的文件中。几个月后,我发现这些会话文件永远不会被删除,现在这个目录中有 145.000 个。

这些应该如何清理?我是否必须以编程方式执行此操作,或者是否可以在某个地方使用可以自动进行此清理的设置?

编辑 忘了提及:这个站点在提供商处运行,所以我无权访问命令行。我确实有 ftp 访问权限,但会话文件属于另一个用户(我猜是网络服务器进程运行的那个)从我得到的第一个答案中,我认为这不仅仅是服务器或 PHP 上的设置,所以我想我会必须在 PHP 中为它实现一些东西,并定期从浏览器调用它(可能来自在我家自己的机器上运行的 cron 作业)

原文由 Jack 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 461
2 个回答

要正确处理会话,请查看 http://php.net/manual/en/session.configuration.php

在那里你会发现这些变量:

  • session.gc_probability
  • session.gc_divisor
  • session.gc_maxlifetime

这些控制垃圾收集器 (GC) 运行每个页面请求的概率。

您可以在脚本或 .htaccess 文件的开头使用 ini_set() 设置它们,以便在某种程度上确定它们会在某个时候被删除。

原文由 Seb 发布,翻译遵循 CC BY-SA 3.0 许可协议

cd 到会话目录,然后:

  1. 查看超过 40 分钟的会话: find . -amin +40 -exec stat -c "%n %y" {} \;

  2. 删除超过 40 分钟的会话: find . -amin +40 -exec rm {} \;

原文由 David Lefkon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题