实战经验:修改PHP session存放位置

2022-10-11 22:04:07 193 0
魁首哥

今天没事的时候看看网站后台,发现C:\windows\ temp 下,有大概好几万个sess_开头的文件,着实把我惊到了。

有点强迫症的我,开始了一些探究。

探究主题

1) sess IO n文件存放位置的自定义

2) session文件的定期删除

自定义Session文件位置

这个在网络上已经有很多教程了,就不过多描述。主要的步骤如下:

1) 打开php. ini ,修改session.save_path的值,比如,你想将session文件存放到D盘下的Test目录,则可以设置为:

session.save_path = “D:\Test”

需要注意如下几点:

1.1 存放的目录必须存在,如果不存在,则先手动创建

1.2 路径加双引号

2) 设置写入权限。如果使用IIS的话,需要在存放目录添加IUser对该目录的写入权限。这一点很重要,如果没有设置写入权限,你的站点依然看起来可以正常工作,但是session文件会写入失败,且错误日志不会有任何错误提示。

3) 重启IIS时配置生效。

Session文件的定期删除

修改了Session文件的存放位置,依然没有解决Session文件长时间积累会越来越多的问题。

我们可以在Windows任务中添加一个周期性的任务,自动删除过期的Session文件。

删除脚本如下:

解释如下

/p “D:\Test” 指定开始搜索的路径,这里搜索的是D盘下的Test目录。

/s 启用递归搜索。

/m sess_* 使用 通配符 ,这里仅搜索以sess_开头的文件。

/d -1 搜索修改日期为当前脚本执行日期的前一天的文件。

/c “cmd /c del @path” 对每一个搜索到的文件执行的指令,这里对所有前一天的sess_开头的文件执行了删除动作。@path为目标文件的全路径。

将以上指令保存为 bat文件 并放到Windows任务里,每天定时执行一次就可以了。

总结

将session保存到文件,仅仅针对的是小型站点,如果是大型海量用户的站,则会因为产生巨量的session文件导致大量的文件IO,使得网站的性能下降,这个时候,就需要考虑将Session迁移至数据库或者缓冲中了,例如 MySQL 或者 Redis

收藏
分享
海报
0 条评论
193
上一篇:浅谈php一句话木马工作原理 下一篇:关于PHP在开发模式和产品模式下的报错处理

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码