Рекурсивный листинг каталогов


Я пытаюсь оптимизировать производительность рекурсивный листинг каталогов с некоторыми исключениями:

function listdir($basedir) {
    global $root, $ignore_dirs, $ignore_files, $filetypes, $ignore_starts_with;
        if ($handle = @opendir($basedir)) { 
            while (false !== ($fn = readdir($handle))) { 
                if ($fn != '.' && $fn != '..') {

                    $s = true;
                    foreach ($ignore_starts_with as $pre) if (strpos($fn, $pre) === 0) $s = false;

                    $dir = $basedir."/".$fn;
                    if ($s && is_dir($dir) && !in_array($fn, $ignore_dirs)) {
                        listdir($dir);
                    } else {

                        if ($s && !in_array($fn,$ignore_files) && preg_match("/[^.\/].+\.($filetypes)$/",$dir,$fname)) printlink($fname[0]);
                    } 
                } 
            } 
        closedir($handle); 
    } 
}


347
2
задан 29 июля 2011 в 04:07 Источник Поделиться
Комментарии
1 ответ

Прежде всего, я хотел бы использовать recursivedirectoryiterator упакован, снят Globals и поправил форматирование.

Затем использовать отладчик xdebug + модулем cachegrind, чтобы попробовать разные варианты.

2
ответ дан 30 июля 2011 в 06:07 Источник Поделиться