php RecursiveDirectoryIterator 只显示文件夹和子文件夹名称


php RecursiveDirectoryIterator show only folder and subfoldernames

我的网站越来越慢,我找到了:

这里的这部分大约需要 2/2.5 有时需要 3 秒才能加载:

$root = 'assets/img/fotogalerij';
    $iter = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($root, RecursiveDirectoryIterator::SKIP_DOTS),
        RecursiveIteratorIterator::SELF_FIRST,
        RecursiveIteratorIterator::CATCH_GET_CHILD // Ignore "Permission denied"
    );
    $paths = array($root);
    unset($paths[0]);
    foreach ($iter as $path => $dir) {
        if ($dir->isDir()) {
            $paths[] = str_replace($root, '', $path);
        }
    }

我在这个目录中有大约 2200 个文件if($dir->isDir())部分是瓶颈。

检查 isDir 2200 次有点要付出代价

有没有更有效的方法来仅显示文件夹和子文件夹名称?

我不关心文件,我只想要文件夹和子文件夹名称

我是这个领域的新手,我发现的有关此问题的信息是关于仅显示当前文件夹名称或列出文件名(如 opendir、readdir、scandir、glob 等)

设置保存目录和子目录列表的字段或数据库表。然后设置一个简单的 incrond ( http://inotify.aiken.cz ) 任务来执行一个脚本,该脚本将在每次目录树结构发生变化时从该列表中添加/删除项目。

实际上,您将拥有目录/子目录列表的"缓存"版本,并且它将自动更新。作为一件好事,它非常容易设置