2016-12-09 2 views
0

Я в настоящее время этот код в PHP:Наиболее эффективный способ написания DirectoryIterator для PHP

// RETURN FILE NAMES FROM VAULT INTO ARRAYS 
    $vault_folder = "\\\\namespace\\namespace\\folder\\folder\\folder\\folder\\"; 
    foreach (new DirectoryIterator($vault_folder) as $fileInfo) { 
     if (strtolower(pathinfo($fileInfo, PATHINFO_EXTENSION)) == "pdf") { 
      if($fileInfo->isDot() || !$fileInfo->isFile()) continue; 
      $files[] = $fileInfo->getFilename(); 
     }; 
    } 
    arsort($files); 

То, что я хотел бы знать, если это является наиболее эффективным способом, чтобы написать это заявление.

В настоящее время он ищет сетевое местоположение '$vault_folder и сохраняет все имена файлов в массиве $files.

Папка содержит несколько файлов, и я только хочу, чтобы хранить файлы PDF в $files массиве, следовательно:

if (strtolower(pathinfo($fileInfo, PATHINFO_EXTENSION)) == "pdf") 

strtolower входят в одну из компаний, которые создают некоторые из этих файлов PDF для нас сохранить файлы как .PDF, а не .pdf. Он также должен связать обратно файл в дальнейшем в коде, чтобы его нужно было хранить в правильном случае.

Возврат файлов 7k занимает 7 секунд, отдайте или возьмите!

ответ

1

Попробуйте использовать glob(), это может быть несколько быстрее, чем реализация логики в пользовательском цикле:

$files = glob('\\\\namespace\\namespace\\folder\\folder\\folder\\folder\\*.{pdf,PDF}', GLOB_BRACE); 

Что касается текущей реализации, SplFileInfo уже есть метод, чтобы получить расширение: getExtension().

+0

glob кажется хорошей функцией для проверки. Однако вышеприведенный оператор не будет содержать файлы .PDF и .pdf, он добавит только файлы .pdf в массив $ files – bepster

+0

Обновлен ответ для поддержки как .pdf *, так и * .PDF * (если вам не нужны такие вещи, как * .Pdf * или * .pDf *). – ShiraNai7

+0

GLOB, кажется, возвращает результаты медленнее среднего значения 16сек для моего запроса и среднего значения 23сек для GLOB, я собираюсь создать свое имя файла в таблицу sql и ссылку таким образом, поскольку это будет намного более эффективно – bepster

Смежные вопросы