function rmblankfile($dir, $size = 0){
if(!is_dir($dir)){
return;
}
$handle = opendir($dir);
while($sub = readdir($handle)){
if($sub == '.' or $sub == '..'){
continue;
}
$filepath = $dir . '/' . $sub;
if(is_dir($filepath)){
#如果是文件夹就递归删除该文件夹下的文件
rmblankfile($filepath, $size);
}else if(is_file($filepath) and filesize($filepath) <= $size){
unlink($filepath);
}
}
}
这个保存PHP后怎么使用啊
问题补充:
我要做的是,目录里有的文件是等于6.3KB的,目录结构式news/二级文件夹下的文件查到后自动删除
注意news/文件夹下有很多二级文件夹
if(!is_dir($dir)){
return;
}
$handle = opendir($dir);
while($sub = readdir($handle)){
if($sub == '.' or $sub == '..'){
continue;
}
$filepath = $dir . '/' . $sub;
if(is_dir($filepath)){
#如果是文件夹就递归删除该文件夹下的文件
rmblankfile($filepath, $size);
}else if(is_file($filepath) and filesize($filepath) <= $size){
unlink($filepath);
}
}
}
这个保存PHP后怎么使用啊
问题补充:
我要做的是,目录里有的文件是等于6.3KB的,目录结构式news/二级文件夹下的文件查到后自动删除
注意news/文件夹下有很多二级文件夹
rmblankfile("news", floor(6.3*1024));
set_time_limit(0);
有没有什么好的解决方法
if(!is_dir($dir)){
return;
}
$handle = opendir($dir);
while($sub = readdir($handle)){
if($sub == '.' or $sub == '..'){
continue;
}
$filepath = $dir . '/' . $sub;
if(is_dir($filepath)){
#如果是文件夹就递归删除该文件夹下的文件
rmblankfile($filepath, $size);
}else if(is_file($filepath) and filesize($filepath) <= $size){
unlink($filepath);
}
}
closedir($handle);
}
句柄释放掉会减少一定的资源占用,但是递归本身就会占用很多资源,这样写可以在每执行完第一个最下级子文件夹后释放掉此文件夹的句柄,否则,句柄一直在内存中,数据量大的时候累积起来,很容易溢出