龙空技术网

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

漫漫开发路 143

前言:

现时大家对“php修改session”大约比较讲究,大家都想要了解一些“php修改session”的相关知识。那么小编也在网上汇集了一些有关“php修改session””的相关文章,希望你们能喜欢,咱们快快来了解一下吧!

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

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

探究主题

1) session文件存放位置的自定义

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。

标签: #php修改session