Функция PHP is_dir слишком медленная при сравнении большого количества больших файлов - PullRequest
0 голосов
/ 23 мая 2018

У меня есть каталог с более чем 600 mp4-файлами и несколькими каталогами.Я пытаюсь перебрать файлы и определить, является ли файл каталогом или нет, и получить размер файла.Проблема в том, что is_dir и fileize занимают много времени при получении этой информации для больших файлов (> 2 ГБ).Есть ли эффективный способ сделать это?в моем примере кода я закомментировал размер файла и is_dir, а затем вернул массив через несколько секунд.В противном случае это займет вечность.

    $files=array();
    $directory=opendir($dir);
    while ($file = readdir($directory)) {
        if($file != "." && $file != ".." && $file != '$RECYCLE.BIN'){
                $rec=array(
                    'afile'=>"{$dir}/{$file}",
                    'name'=>$file
                );
                //if(is_dir($rec['afile'])){$rec['type']='dir';}
                //else{$rec['type']='file';}
                //$rec['size']=filesize($rec['afile']);
                $files[]=$rec;
            }
        }
    closedir($directory);
...