session文件过多怎么办
2个回答
展开全部
在8.7.1和9.0.1中,为了防止黑客攻击,在登录、发帖等部分都使用了token进行身份校验,而其不再使用cookie存储token信息,而是使用了session,因此,有些站长会发现服务器上生成了一些以“sess_”开的文件,这些文件是php生成的session文件,由php生成并定期清理(默认24分钟)。
有些站长的站访问量比较大,担心会影响服务器性能,针对这种情况,有三种方法可以选择:
1、使用内存来保存session,比如放入memecached中
1)安装memecached
2)修改php.ini的配置文件
session.save_handler = files
修改为
session.save_hander = memcache;
session.save_path = "tcp://host:端口号"; (例如:session.save_path = "tcp://127.0.0.1:11211";,其中11211是memechached的默认端口号)
2、使用session的分级目录
修改php.ini的配置文件
session.save_path = "/tmp"
修改为
session.save_path = "2;/tmp/session"
这表示使用/tmp/session目录下二级散列目录存储session
然后呢,php不会自动建立散列目录,需要手动创建
也就是说你需要手动创建如下文件夹,并给权限
/tmp/session/0/0/
/tmp/session/0/1/
/tmp/session/0/3/
tmp/session/0/4/
当然,你也可以用这段代码来快速生成目录
<?php
$string = '0123456789abcdefghijklmnopqrstuvwxyz';
$length = strlen($string);
for($i = 0; $i < $length; $i++) {
for($j = 0; $j < $length; $j++) {
func_mkDir('/tmp/session/'.$string[$i].'/'.$string[$j]);
}
}
?>
3、用自动清理session
/etc/cron.hourly/下新建了一个文件session
内容如下:
find /tmp/session -amin +180 -exec rm -rf {} \;
表示1小时清理一次,清理大于3个小时的session文件。
有些站长的站访问量比较大,担心会影响服务器性能,针对这种情况,有三种方法可以选择:
1、使用内存来保存session,比如放入memecached中
1)安装memecached
2)修改php.ini的配置文件
session.save_handler = files
修改为
session.save_hander = memcache;
session.save_path = "tcp://host:端口号"; (例如:session.save_path = "tcp://127.0.0.1:11211";,其中11211是memechached的默认端口号)
2、使用session的分级目录
修改php.ini的配置文件
session.save_path = "/tmp"
修改为
session.save_path = "2;/tmp/session"
这表示使用/tmp/session目录下二级散列目录存储session
然后呢,php不会自动建立散列目录,需要手动创建
也就是说你需要手动创建如下文件夹,并给权限
/tmp/session/0/0/
/tmp/session/0/1/
/tmp/session/0/3/
tmp/session/0/4/
当然,你也可以用这段代码来快速生成目录
<?php
$string = '0123456789abcdefghijklmnopqrstuvwxyz';
$length = strlen($string);
for($i = 0; $i < $length; $i++) {
for($j = 0; $j < $length; $j++) {
func_mkDir('/tmp/session/'.$string[$i].'/'.$string[$j]);
}
}
?>
3、用自动清理session
/etc/cron.hourly/下新建了一个文件session
内容如下:
find /tmp/session -amin +180 -exec rm -rf {} \;
表示1小时清理一次,清理大于3个小时的session文件。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询