4

次のコードを検討してください。

public static function removeDir($src)
{
    if (is_dir($src)) {
        $dir = @opendir($src);
        if ($dir === false)
            return;
        while(($file = readdir($dir)) !== false) {
            if ($file != '.' && $file != '..') {
                $path = $src . DIRECTORY_SEPARATOR . $file;
                if (is_dir($path)) {
                    self::removeDir($path);
                } else {
                    @unlink($path);
                }
            }
        }
        closedir($dir);
        @rmdir($src);
    }
}

これにより、ディレクトリが削除されます。しかし、いずれかのサブディレクトリで unlink が失敗したり、opendir が失敗した場合、ディレクトリには一部のコンテンツが残されます。

すべてを削除するか、何も削除しないでください。削除する前にディレクトリをコピーし、何かが失敗した場合はコピーを復元することを考えています。しかし、ファイルをロックするなど、もっと良い方法があるのではないでしょうか?

4

2 に答える 2