3 回答
TA贡献1815条经验 获得超10个赞
Debian / Ubuntu使用/etc/cron.d/php5中定义的cronjob处理此问题
# /etc/cron.d/php5: crontab fragment for php5
# This purges session files older than X, where X is defined in seconds
# as the largest value of session.gc_maxlifetime from all your php.ini
# files, or 24 minutes if not defined. See /usr/lib/php5/maxlifetime
# Look for and purge old sessions every 30 minutes
09,39 * * * * root [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm
maxlifetime脚本通过检查php.ini只返回会话应该保持活动的分钟数,它看起来像这样
#!/bin/sh -e
max=1440
for ini in /etc/php5/*/php.ini; do
cur=$(sed -n -e 's/^[[:space:]]*session.gc_maxlifetime[[:space:]]*=[[:space:]]*\([0-9]\+\).*$/\1/p' $ini 2>/dev/null || true);
[ -z "$cur" ] && cur=0
[ "$cur" -gt "$max" ] && max=$cur
done
echo $(($max/60))
exit 0
TA贡献1866条经验 获得超5个赞
如果有人想用cronjob做这件事,请记住:
find .session/ -atime +7 -exec rm {} \;
当有很多文件时,真的很慢。
考虑使用此代替:
find .session/ -atime +7 | xargs -r rm
如果你的文件名中有空格,请使用:
find .session/ -atime +7 -print0 | xargs -0 -r rm
xargs
将使用要删除的文件填充命令行,然后运行比rm
命令少得多-exec rm {} \;
的rm
命令,这将调用每个文件的命令。
只是我的两分钱
- 3 回答
- 0 关注
- 369 浏览
添加回答
举报