从自定义设置会话文件夹中删除旧会话文件?

时间:2011-10-04 18:50:45

标签: php session

使用PHP,如果我设置自定义会话文件夹来存储会话文件,我该怎么做才能确保最终删除旧的会话文件?有没有办法让Apache或PHP为我处理这个,或者我是否需要设置一些东西来自己清理这个文件夹?非常感谢有关此主题的任何信息。

我正在使用session_save_path()来更改会话文件夹,如果这会产生影响。

3 个答案:

答案 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的很多建议