php session实现多级目录存放实现代码
当一个目录下有很多文件时,服务器的处理性能会变低,php默认的session仅仅存放在/tmp目录下,未进行分级,当有一定的访问量时,就存在性能问题了。
首先,修改php.ini的session.save_path选项修改如下:
session.save_path=“2;/tmp/session”(去掉前面分号)
表示把session存放在“/tmp/session”目录下,并且分成2级子目录
一般情况下2级目录就够了,就能够处理相当大的访问量了
———————–
其他注释
session.hash_function=0
;生成SID的散列算法。SHA-1的安全性更高一些
;0:MD5(128bits)
;1:SHA-1(160bits)
;建议使用SHA-1。
session.hash_bits_per_character=4
;指定在SID字符串中的每个字符内保存多少bit,
;这些二进制数是hash函数的运算结果。
;4:0-9,a-f
;5:0-9,a-v
;6:0-9,a-z,A-Z,“-“,“,”
;建议值为5
————————–
php源码文件中ext/session/mod_files.sh文件,可以辅助生成目录,就不用自己在写脚本了
#!/bin/sh iftest"$2"="";then echo"usage:$0basedirdepth" exit1 fi iftest"$2"="0";then exit0 fi hash_chars="0123456789abcdef" iftest"$3"-a"$3"-ge"5";then hash_chars="$hash_charsghijklmnopqrstuv" iftest"$3"-eq"6";then hash_chars="$hash_charswxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-," fi fi foriin$hash_chars;do newpath="$1/$i" mkdir$newpath||exit1 sh$0$newpath`expr$2-1`$3 done
设置为可执行之后,运行以下命令来创建哈希目录:
#cd/root/soft_install/php-5.3.5/ext/session
#./mod_files.sh/tmp/session25
三个参数依次表示,存放路径,几级目录,每个目录生成多少个目录(参考session.hash_bits_per_character)
另外需要注意修改/tmp/session的权限,保证运行php的帐号有权限读写