0

我尝试删除一个包含很多子文件夹和文件(> 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);
        }
    }

问题是,很多文件都留下了。这是通常的行为,我的代码有问题吗?如果这是通常的行为,我该如何解决这个问题?

提前致谢。

4

1 回答 1

0

不同的操作处理这个不同。在大多数操作系统和文件系统中,文件可以被锁定为只读或写操作。

如果另一个进程持有带锁的文件句柄,您的进程可能不会修改(或删除)该文件。这对于不同的线程也可能是正确的。

于 2013-08-27T20:26:07.893 回答