В PHP - оптимизации рекурсивный метод


Вот рекурсивная функция, которую я написал для поиска файловой системы на глубину ребенка определяется $глубине.

Это может быть оптимизировано больше?

function stringSearch($working_dir,&$results_array,$depth)
{
    global $search_string;
    global $dir_count;
    global $file_count;
    global $working_url;
    global $max_depth;

    if($max_depth>=($depth+1))
    {
        $dir_array = glob($working_dir.'/*', GLOB_ONLYDIR);
        foreach($dir_array as $new_path)
        {
            stringSearch($new_path,$results_array,($depth+1));
            $dir_count++;
        }
    }

    $handle = opendir($working_dir);
    while ($file = readdir($handle)) 
    {
        if(is_file($working_dir.'/'.$file))
        {
            if(stripos(str_replace('_',' ',$file),$search_string))
                $results_array[] = array('file'=>$file,'path'=>$working_dir,'url'=>$working_url.str_replace($_SERVER["DOCUMENT_ROOT"],'',$working_dir));

            $file_count++;
        }
    }

    return;
}


964
5
задан 12 ноября 2011 в 07:11 Источник Поделиться
Комментарии
1 ответ

Я это пару минут назад ответил, но тоже касается

https://stackoverflow.com/questions/8108175/php-usleep-to-prevent-script-timeout/8108229#8108229

Если вы просто использовать : $ручка = каталог файлов($working_dir); вы можете найти себе ждет сценарий тайм-аут на не существующие каталоги. Так хотяб использовать:

if (! $handle = opendir($working_dir)) 
exit(0);

Его, как правило, намного быстрее, чтобы просто проверить, если функции еще возможно, прежде чем начать их, хотя он может чувствовать себя ваши реализации способ, для многих, если заявления, но если отчетность не быстро и большинство ошибок не являются ;)

1
ответ дан 12 ноября 2011 в 11:11 Источник Поделиться