因为服务器访问量大,产生了大量的session文件,若这些文件默认都保存在/tmp目录下,会造成服务器性能问题,所以需要把session文件散列存储。
session_save_path(“2;0666;/var/www/html/session”);
php并不会自动创建这些目录,所以我写了个shell脚本来创建这些目录:
#! /bin/sh
subdir="session"
depth="2"
hash_chars="0 1 2 3 4 5 6 7 8 9 a b c d e f"
makedir()
{
if test "$2" = "0"; then
return
fi
for i in $hash_chars; do
newpath="$1/$i"
mkdir $newpath || exit 1
echo "mkdir $newpath"
makedir $newpath `expr $2 - 1`
done
}
mkdir session
makedir $subdir $depth;
开头的3个变量可以自己根据需要设置
虽然php中有配置自动清理session,但在这种多级目录存储的情况下并不会生效,所以我们要自己写个脚本清理session文件,脚本内容如下:
find /var/www/html/session -mtime +1 -exec rm -rf {} \;
放入cron中,定期执行。