使用PHP,如果我设置自定义会话文件夹来存储会话文件,我该怎么做才能确保最终删除旧的会话文件?有没有办法让Apache或PHP为我处理这个,或者我是否需要设置一些东西来自己清理这个文件夹?非常感谢有关此主题的任何信息。
我正在使用session_save_path()来更改会话文件夹,如果这会产生影响。
答案 0 :(得分:7)
只要您不在php的session.save_path设置中使用N;
选项,PHP将根据session.gc_probability / session.gc_divisor / session.max_lifetime设置自动清理过时会话< / p>
如果您已经推出了自己的会话处理程序,那么您将负责清理。
答案 1 :(得分:6)
是的,您需要手动清理它们,因为您已经setup your own session save path了。 (今天它说的只是分割目录选项,但我有服务器仍然需要这甚至不使用该功能,但使用自定义会话保存路径,它是一些PHP 5.2.x,我需要手动清理。)
您可以检查文件的年龄,并删除它是否超过x天/分钟,无论如何:
cd /path/to/sessions; find -cmin +24 | xargs rm
取自php.ini
的注释部分:
; NOTE: If you are using the subdirectory option for storing session files
; (see session.save_path above), then garbage collection does *not*
; happen automatically. You will need to do your own garbage
; collection through a shell script, cron entry, or some other method.
; For example, the following script would is the equivalent of
; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
; cd /path/to/sessions; find -cmin +24 | xargs rm
请参阅此相关/重复问题: cleanup php session files
“单一”命令:
find /path/to/session -name sess_* -cmin +24 -exec rm {} \;
答案 2 :(得分:0)
您将需要定期清理自定义PHP会话目录。您可以通过@hakre
运行CRON作业来处理答案我们使用Plesk,它在工具和设置>计划任务下有一个方便的CRON /任务管理器。您可以创建一个新任务,并按设置的时间间隔运行脚本/命令。
另一点是,如果您在共享服务器上或会话目录与其他站点/资源共享,则运行自定义会话路径会非常好。
我将其发布在此处,因为答案/主题很有用,但我没有在网上找到有关自定义PHP session_path的很多建议