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

異なるオペレーティングは、これを異なる方法で処理します。ほとんどの OS ファイルシステムでは、ファイルは読み取りまたは書き込み操作専用にロックできます。

別のプロセスがファイルハンドルをロックで保持している場合、そのプロセスはファイルを変更 (または削除) できません。これは、異なるスレッドにも当てはまります。

于 2013-08-27T20:26:07.893 に答える