Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mencari Fail dan Folder secara Rekursif dalam PHP Tanpa Isu Prestasi?

Bagaimanakah Saya Boleh Mencari Fail dan Folder secara Rekursif dalam PHP Tanpa Isu Prestasi?

Linda Hamilton
Linda Hamiltonasal
2024-11-25 21:17:27211semak imbas

How Can I Recursively Find Files and Folders in PHP Without Performance Issues?

Mencari Fail dan Folder Secara Rekursif dengan PHP

Untuk merentasi kandungan direktori dan semua subdirektori, fungsi rekursif digunakan. Walau bagaimanapun, kod yang diberikan mempunyai isu prestasi, menyebabkan penyemak imbas menjadi perlahan dengan ketara.

Isunya

Fungsi ini tidak mengecualikan "." dan direktori ".." daripada panggilan rekursif, yang membawa kepada gelung tak terhingga dan pelaksanaan perlahan.

Pembetulan

Untuk menangani isu ini, kami mengubah suai kod sebagai berikut:

function getDirContents($dir, &$results = array()) {
    $files = scandir($dir);

    foreach ($files as $key => $value) {
        $path = realpath($dir . DIRECTORY_SEPARATOR . $value);
        if (!is_dir($path)) {
            $results[] = $path;
        } else if ($value != "." && $value != "..") {
            getDirContents($path, $results);
            $results[] = $path;
        }
    }

    return $results;
}

Pengecualian "." dan ".."

Kami menambah syarat untuk mengecualikan "." dan ".." direktori daripada panggilan rekursif. Direktori ini mewakili direktori semasa dan induk, masing-masing, dan kemasukannya akan mencipta gelung tak terhingga.

Penggunaan

Untuk menggunakan fungsi, hanya sediakan laluan ke direktori yang ingin anda lalui:

var_dump(getDirContents('/xampp/htdocs/WORK'));

Kod ini akan mengembalikan tatasusunan yang mengandungi senarai lengkap fail dan folder dalam yang ditentukan direktori. Setiap entri akan menjadi laluan penuh ke fail atau folder.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Fail dan Folder secara Rekursif dalam PHP Tanpa Isu Prestasi?. 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