java mkdir c盘_c盘temp文件夹存在大量sess开头文件原因与解决方法

服务器经常宕机,重启后也总是cpu占用率非常高,一旦关闭iis则恢复正常。

当在清理垃圾文件时,发现c:\windows\temp文件夹中存在超级多以sess_开头的文件,此类文件之多使得无法正常的打开temp文件夹和删除清理。

以下是原因分析与解决方法参考。

一、 temp文件夹大量文件的删除

以sess开头的存在于temp系统临时文件夹的文件,是php的session保存文件,由于php建立了session却在过期后没有成功删除,于是导致大量文件的积累。

清理方法:

新建批处理文件del_temp.bat,其中写入如下命令:

del %TEMP% /s /q *.*

保存后双击运行,即开始进行删除处理(也可直接在cmd命令行中输入执行)。

也可以将其加入开机启动项,以使得每次重启系统后即执行一次删除处理。

提示:

1. 如果这里执行一直显示无法进行(志文工作室最先遇到的情况即如此),则可能是temp文件夹及其中部分文件正处于使用状态,那么可以在同目录下新建一个文件夹tmp,然后修改系统环境变量temp和tmp的位置为此,接着重启系统使得新的临时目录生效,此时即可对temp文件任意删改了。

2. 服务器temp文件夹内存在数十万这样的文件,清理了若干小时才完成。

故在进行处理前应停止iis:

net stop iisadmin 关闭iis服务

net start iisadmin 开启iis服务

3. 当然,不希望在处理的过程中让网站关闭太久,可以参照如下操作进行:

1>. 关闭iis

2>. 更改php保存session的默认路径(参考后面内容)

3>. 开启iis,检查服务器所有站点是否正常

4>. 执行del_temp.bat进行清理

二、修改php的Session保存路径session.save_path

1. 打开php.ini文件,查找到

“;session.save_path = "/tmp"”

将其修改为指定的位置用于存储session,形如这样:

session.save_path = "c:/tmp/phpsession"

当然,也可以使用分级目录的方式,比如改为这样:

session.save_path="5;c:/tmp/phpsession"

2. 新建文件夹路径:c:/tmp/phpsession

3. 添加该路径(即phpsession文件夹)的internet来宾账户修改和写入权限,注意最好不要给予执行权限。

4. 启动iis,观察该目录是否会有新的session文件产生。

三、php的session多级目录存放解决大量临时文件效率问题

session多级存放可以缓解一个目录下session文件过多带来的读写效率问题。

php.net上针对sesstion配置相关的说明:http://cn.php.net/manual/zh/ref.session.php

session.save_path string

session.save_path 定义了传递给存储处理器的参数。如果选择了默认的 files 文件处理器,则此值是创建文件的路径。默认为 /tmp。参见 session_save_path()。

此指令还有一个可选的 N 参数来决定会话文件分布的目录深度。例如,设定为 '5;/tmp' 将使创建的会话文件和路径类似于:

/tmp/4/b/1/e/3 /sess_4b1e384ad74619bd212e236e52a5a174If

要使用 N 参数,必须在使用前先创建好这些目录。在 ext/session 目录下有个小的 shell 脚本名叫 mod_files.sh 可以用来做这件事。此外注意如果使用了 N 参数并且 N 大于 0,那么将不会执行自动垃圾回收,更多信息见 php.ini。

另外如果用了 N 参数,要确保将 session.save_path 的值用双引号 “quotes” 括起来,因为分隔符分号( ;)在 php.ini 中也是注释符号。

参考以上说明,在定义session.save_path中可以定义多级存放的路径,于是我们可以修改php.ini中的session.save_path为:

session.save_path = “2;/data/session_tmp”

如此将session文件分成两级存放,即类似于:

/data/session_tmp/4/b/sess_4b1e384ad74619bd212e236e52a5a174If

取session的前两位字符作为二级目录索引,但是php并不生成目录,需要自己手工生成,这里提供一个php脚本来生成初始的目录。

复制代码 代码示例:

$string = '0123456789abcdefghijklmnopqrstuvwxyz';

$length = strlen($string);

function makeDir($param)

{

if(!file_exists($param)) {

echo "mkdir ".$param."\n”;

exec("mkdir ".$param);

}

}

for($i = 0; $i < $length; $i++) {

for($j = 0; $j < $length; $j++) {

makeDir('/data/session_tmp/'.$string[$i].'/'.$string[$j]);

}

}

?>

session目录分级处理之后,IO处理值增加,http进程降低,web处理效率明显好转。

Temp文件夹是用来存储在文件操作过程中的临时文件文件夹。这些临时文件包括安装软件、解压缩压缩包等操作所需的文件。通常情况下,系统会自动清空Temp文件夹中的临时文件,但有时候系统可能没有注意到这一点而导致垃圾文件越来越多。这些垃圾文件会浪费磁盘空间,并且可能导致磁盘碎片化,影响读写速度。 Temp文件夹存在C盘的两个地方,一个是C:\WINDOWS\Temp,这是系统公用的;另一个是C:\Documents and Settings\登录的帐号\Local Settings\Temp,这是当前登录账户的配置文件夹下的Temp文件夹。这样的分布对于控制磁盘碎片是不利的。 为了清理C盘Temp文件夹,你可以使用以下方法之一: 1. 手动清理:定期打Temp文件夹并手动删除其中的文件。 2. 更改临时文件夹位置:可以在非系统盘(如D盘)上创建一个新的文件夹(例如D:\UserData\TEMP),然后将系统的临时文件夹路径改为新创建的文件夹路径。具体操作是右击“我的电脑”,选择“属性”,进入“高级”,打“环境变量”对话框,将用户变量和系统变量中的临时文件夹路径改为新创建的文件夹路径。 3. 使用第三方清理工具:可以使用一些第三方软件或小程序来清理Temp文件夹,例如创建一个文本文档,写入两行代码:RD %TEMP% /S/Q和MKDIR %TEMP%,然后将该文件另存为.bat格式(例如CleanTEMP.bat),运行该文件即可自动清空Temp文件夹中的临时文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值