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
Lepaskan: 2024-11-25 21:17:27
asal
165 orang telah melayarinya

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;
}
Salin selepas log masuk

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'));
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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 terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan