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!