php RecursiveDirectoryIterator仅显示文件夹和子文件夹

时间:2014-11-29 10:41:02

标签: php performance

我的网站越来越慢,我发现了这个问题:

此部分需要大约2 / 2.5 somtimes 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等)

1 个答案:

答案 0 :(得分:1)

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

实际上,您将拥有目录/ subdir列表的“缓存”版本,它将自动更新。作为一件好事,它很容易设置

相关问题