Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php kosongkan folder kosong

php kosongkan folder kosong

PHPz
PHPzasal
2023-05-06 17:51:07830semak imbas

Apabila masa berlalu dan fail dimanipulasi secara berterusan, anda mungkin mengumpul banyak folder kosong pada pelayan anda. Mereka tidak mengambil ruang cakera yang berlebihan, tetapi mereka mungkin mempunyai kesan ke atas prestasi sistem fail dan kebersihan. Oleh itu, adalah perlu untuk mengosongkan folder kosong ini dengan kerap.

Artikel ini akan memperkenalkan cara menggunakan PHP untuk menulis atur cara untuk mengosongkan folder kosong.

  1. Dapatkan Senarai Direktori

Pertama, kita perlu menyenaraikan semua folder yang perlu disemak dan dikosongkan. Kita boleh menggunakan fungsi scandir() PHP untuk mendapatkan senarai semua fail dan folder dalam direktori sasaran.

function getDirs($dir) {
    $dirs = array_diff(scandir($dir), array(".", ".."));
    return $dirs;
}

Fungsi di atas akan merentasi direktori sasaran dan mengembalikan senarai folder yang tidak termasuk direktori semasa (".") dan direktori sebelumnya ("..").

  1. Semak sama ada folder kosong

Kami perlu menyemak sama ada setiap folder kosong. Kita boleh menggunakan fungsi glob() PHP untuk mendapatkan semua fail di bawah folder dan menentukan sama ada terdapat fail lain dalam folder itu. Jika tiada fail, ia ditandakan sebagai kosong dan boleh dipadam kemudian.

function isEmpty($dir) {
    $isEmpty = true;
    $files = glob($dir.'/*');
    foreach ($files as $file) {
        if (is_dir($file)) {
            $isEmpty = false; // 如果有任何子文件夹则不是空文件夹
        }
        else {
            $isEmpty = false;
        }
    }
    return $isEmpty;
}

Fungsi ini akan mengembalikan nilai Boolean yang menunjukkan sama ada folder itu kosong.

  1. Melintasi folder secara rekursif

Kami juga perlu melintasi folder dan subfoldernya secara rekursif untuk mencari semua folder kosong. Kita boleh menggunakan fungsi getDirs() yang ditulis di atas untuk mendapatkan senarai folder, untuk setiap folder kami akan menyemak sama ada ia kosong dan jika ya, tambahkannya ke senarai folder kosong.

function getEmptyDirs($dir) {
    $emptyDirs = array();
    $dirs = getDirs($dir);
    foreach ($dirs as $d) {
        $subdir = $dir.'/'.$d;
        if (is_dir($subdir)) {
            if (isEmpty($subdir)) {
                $emptyDirs[] = $subdir;
            }
            else {
                $subdirs = getEmptyDirs($subdir);
                if (!empty($subdirs)) {
                    $emptyDirs = array_merge($emptyDirs, $subdirs);
                }
            }
        }
    }
    return $emptyDirs;
}

Fungsi ini akan mengembalikan senarai semua folder kosong dengan mengulangi folder secara rekursif dan menyemak sama ada setiap subfolder kosong.

  1. Padam folder kosong

Akhir sekali, kita perlu menulis fungsi untuk memadam folder kosong. Kita boleh menggunakan fungsi rmdir() PHP untuk memadam folder. Walau bagaimanapun, oleh kerana fungsi ini hanya boleh dipanggil pada direktori kosong, kita perlu menyemak sama ada folder itu kosong terlebih dahulu, jika tidak, ia tidak boleh dipadamkan. Kami juga mempunyai pilihan untuk menggunakan fungsi unlink() dan pernyataan gelung untuk memadam direktori tidak kosong dan kandungannya.

function deleteEmptyDirs($dir) {
    $emptyDirs = getEmptyDirs($dir);
    foreach ($emptyDirs as $emptyDir) {
        if (is_dir($emptyDir)) {
            rmdir($emptyDir);
            echo "Deleted empty directory: ".$emptyDir."\n";
        }
    }
}

Fungsi di atas akan mengeluarkan laluan setiap folder kosong yang dipadamkan.

  1. Kod Penuh
function getDirs($dir) {
    $dirs = array_diff(scandir($dir), array(".", ".."));
    return $dirs;
}

function isEmpty($dir) {
    $isEmpty = true;
    $files = glob($dir.'/*');
    foreach ($files as $file) {
        if (is_dir($file)) {
            $isEmpty = false; // 如果有任何子文件夹则不是空文件夹
        }
        else {
            $isEmpty = false;
        }
    }
    return $isEmpty;
}

function getEmptyDirs($dir) {
    $emptyDirs = array();
    $dirs = getDirs($dir);
    foreach ($dirs as $d) {
        $subdir = $dir.'/'.$d;
        if (is_dir($subdir)) {
            if (isEmpty($subdir)) {
                $emptyDirs[] = $subdir;
            }
            else {
                $subdirs = getEmptyDirs($subdir);
                if (!empty($subdirs)) {
                    $emptyDirs = array_merge($emptyDirs, $subdirs);
                }
            }
        }
    }
    return $emptyDirs;
}

function deleteEmptyDirs($dir) {
    $emptyDirs = getEmptyDirs($dir);
    foreach ($emptyDirs as $emptyDir) {
        if (is_dir($emptyDir)) {
            rmdir($emptyDir);
            echo "Deleted empty directory: ".$emptyDir."\n";
        }
    }
}

// 用例
$targetDir = "/path/to/target/directory";
deleteEmptyDirs($targetDir);
  1. Kesimpulan

Menggunakan kaedah di atas, anda boleh membersihkan folder kosong dalam pelayan anda dengan kerap, oleh itu Meningkatkan prestasi dan kebersihan sistem fail keseluruhan. Selain itu, skrip ini boleh ditetapkan untuk dijalankan secara berkala bagi memastikan folder kosong tidak terkumpul dan memberi kesan kepada prestasi sistem fail.

Atas ialah kandungan terperinci php kosongkan folder kosong. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:php mengabaikan kod burukArtikel seterusnya:php mengabaikan kod buruk