在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在Windows上PHP默认的Session服务端文件存放在C:\WINDOWS\Temp下,如果说并发访问很大或者 session建立太多,目录下就会存在大量类似sess_xxxxxx的session文件,同一个目录下文件数过多会导致性能下降,并且可能导致受到 攻击最终出现文件系统错误。针对这样的情况,PHP本身体提供了比较好的解决办法。 打开 php.ini ,查找Session设置部分中以下一项: session.save_path = “N;/path”
这项设置提供给我们可以给session存放目录进行多级散列,其中“N”表示要设置的目录级数,后面的“/path”表示session文件存放的根目录路径,比如我们设置为下面的格式 session.save_path = “2;C:\Temp”
上面的设置表示我们把php的session文件进行两级目录存储,每一级目录分别是0-9和a-z共36个字母数字为目录名,这样存放 session的目录可以达到36*36个,共1332个文件夹,相信作为单台服务器来说,这是完全够用了,如果说您的系统架构设计为多台服务器共享 session数据,可以把目录级增加到3级或者更多。 需要注意的是,php自己并不会自动创建子目录,需要您自己动手去创建。这里将我创建的目录包提供给大家下载,经我测试使用正常。需要的朋友下载后只要将空目录解压缩到你的session存储目录下即可。 网上找到这样的自动创建目录的代码,大家可以做个参考。下面的代码自动创建3级子目录,可以自己动手根据需要进行修改。 1 set_time_limit(0); 2 $string = ’0123456789abcdefghijklmnopqrstuvwxyz’; 3 $length = strlen($string); 4 function makeDir($param) 5 { 6 if(!file_exists($param)) { 7 makeDir(dirname($param)); 8 mkdir($param); 9 } 10 } 11 for($i = 0; $i < $length; $i++) { 12 for($j = 0; $j < $length; $j++) { 13 for($k = 0; $k < $length; $k++) { 14 makeDir($string[$i].’/’.$string[$j].’/’.$string[$k]); 15 } 16 } 17 } 大家可能注意到前面的文字中提到了有关多服务器共享php的SESSION,这是很多应用都会遇到的问题,网上也有不少相关的资源,大家可以去google一下,这里只提一下大概的思路。 一般来说我们用到最多的方法有两种: ————————————————————————– 对于session文件的定期删除我写了一个批处理文件,通过计划任务在每天23:40运行,定在这个时间操作,可以保留一天时间的session。将以下代码保存为 del-sess.bat 执行时间:每天23:40时执行删除一天前的 PHP session 操作
|
2022-07-29
2022-08-30
2022-08-17
2022-11-06
2022-08-18
请发表评论