不会删除所有带有'delete recursive dir'功能的文件

时间:2013-08-27 20:21:12

标签: php

我尝试删除包含大量子文件夹和文件的大目录(> 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);
        }
    }

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

不同的操作处理这个不同。在大多数操作系统中,文件系统,文件可以被锁定,专门用于读取或写入操作。

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