现在只能手工定时清理并分多级目录存放.至少可以缓解i/o压力.下面给个方法,可以用系统计划任务功能.每周运行一次.清空七天前的cookie
一,首先用php自动创建类似这种目录/1/b/或a/1/ 这种以数字和字母缓存的二级目录.php语句如下
代码如下 | 复制代码 |
<?php error_reporting(E_ALL & ~E_NOTICE); $string = ’0123456789abcdefghijklmnopqrstuvwxyz’; $length = strlen($string); for($i = 0; $i < $length; $i++) { for($j = 0; $j < $length; $j++) { createfolder(‘D:/PC_webserver/phproot/v8/data/’.$string[$i].’/’.$string[$j]); } } function createfolder($path) { if (!file_exists($path)) { createfolder(dirname($path)); //回路径中的目录部分 mkdir($path, 0777); } } |
然后,修改服务器上的php.ini文件.搜索session.save_path 这句
修改为session.save_path = “2;D:/tmp/sess”
这句表示,session缓存放在d盘的tmp/sess目录中2级目录中.然后你把上面的文件产生的多级目录复制到D:/tmp/sess,最后形成类似这种目录结构
D:/tmp/sess/m/5/
然后sess就自动生成在里面了.当然,这样分级后,系统就没法自动清理这种垃圾文件了.要手工才行.
代码如下 | 复制代码 |
@echo off echo 正在清除文件,请稍等…… echo y| forfiles /p D:/tmp/sess /s /d -7 /c “cmd /c del @path” echo 清除系统LJ完成! |
把上面内容复制在txt记事本中保存.并修改后缀为.bat ,放计划任务中运行.本句含义是,搜索D:/tmp/sess这个目录,echo y|,表示让你确认时,命令直接选择yes./s表示包含所有子目录,d -7 表示7天前的文件,/c表示要执行的命令,注意加双引号,del表示清空前面的目录.如果增加一句m/ 如后面这句,就表示只删除rar为后缀的文件.否则是删除所有.
代码如下 | 复制代码 |
echo y| forfiles /p D:/tmp/sess /s /m *.rar /d -7 /c “cmd /c del @path” |
下面是php.ini中给出的一种解释
这个秒数之后,存储的数据将被视为“垃圾”,
清理垃圾收集过程。
session.gc_maxlifetime = 1440
注意:如果您使用的是存储会话文件的子目录选项
(见上述session.save_path的),那么垃圾收集不*不*
自动发生。您将需要做你自己的垃圾
收集,通过一个shell脚本,cron项,或其他一些方法。
例如,下面的脚本将是相当于
设置session.gc_maxlifetime 1440(1440秒= 24分钟):
CD /路径/ /节;发现CMIN +24 | xargs的RM