我尝试删除包含大量子文件夹和文件的大目录(> 1000)。为此目的建立了许多功能,我使用以下内容:
function rrmdir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir . "/" . $object) == "dir"){
log_message(201,array(),'Try to delete folder: '.$dir.'/'.$object);
rrmdir($dir . "/" . $object);
}else{
log_message(201,array(),'Try to delete FILE: '.$dir.'/'.$object);
unlink($dir . "/" . $object);
}
}
}
reset($objects);
rmdir($dir);
}
}
问题是,许多文件都被遗忘了。这是通常的行为,我的代码有问题吗?如果这是通常的行为,我该如何解决这个问题?
提前致谢。
答案 0 :(得分:0)
不同的操作处理这个不同。在大多数操作系统中,文件系统,文件可以被锁定,专门用于读取或写入操作。
如果另一个进程持有带锁的文件句柄,则您的进程可能无法修改(或删除)该文件。对于不同的线程也可能是这样。