【问题标题】:Deleting old session files from custom set session folder?从自定义设置会话文件夹中删除旧会话文件?
【发布时间】:2011-11-30 22:43:45
【问题描述】:

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

我目前正在使用 session_save_path() 来更改会话文件夹,如果这有影响的话。

【问题讨论】:

标签: php session


【解决方案1】:

只要你不使用 php 的 session.save_path 设置中的 N; 选项,PHP 就会根据 session.gc_probability / session.gc_divisor / session.max_lifetime 设置自动清理过时的会话

如果您推出了自己的会话处理程序,则您将负责清理工作。

【讨论】:

    【解决方案2】:

    是的,您需要手动清理它们,因为您有 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 {} \;
    

    【讨论】:

    • 我们是否需要定期执行此命令?我们还需要仅在服务器上执行此命令还是可以使用 PHP 文件执行?
    • @vidhi:这仅适用于当今很少见的特定会话配置。如果需要,它应该在 crontab 中设置。如有疑问,请联系相关主机的系统管理员。
    【解决方案3】:

    您需要定期清理自定义 PHP 会话目录。您可以运行 CRON 作业来处理 @hakre 的答案

    我们使用 Plesk,它在工具和设置 > 计划任务下有一个方便的 CRON/任务管理器。您可以创建新任务并以设定的时间间隔运行脚本/命令。

    另一点是,如果您在共享服务器上或会话目录与其他站点/资源共享,则运行自定义会话路径非常好。

    我在这里发布这个是因为答案/主题很有用,我在网上没有找到太多关于自定义 PHP session_path 的建议

    【讨论】:

      猜你喜欢
      • 2011-11-08
      • 1970-01-01
      • 2013-01-06
      • 2015-10-10
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多