Skip to content
Snippets Groups Projects
Commit d31fd8b4 authored by Stephan Großberndt's avatar Stephan Großberndt Committed by Frans Saris
Browse files

[BUGFIX] Improve performance iterating local files

Improve performance iterating local files by avoiding multiple calls to
SplFileInfo.

Releases: master, 8.7
Resolves: #82936
Change-Id: I54b347ad4734d9083b67c7840ff3ab228c07f4bc
Reviewed-on: https://review.typo3.org/54576


Tested-by: default avatarTYPO3com <no-reply@typo3.com>
Reviewed-by: default avatarWouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: default avatarStefan Neufeind <typo3.neufeind@speedpartner.de>
Tested-by: default avatarStefan Neufeind <typo3.neufeind@speedpartner.de>
Reviewed-by: default avatarJoerg Boesche <typo3@joergboesche.de>
Tested-by: default avatarJoerg Boesche <typo3@joergboesche.de>
Reviewed-by: default avatarMathias Brodala <mbrodala@pagemachine.de>
Reviewed-by: default avatarFrans Saris <franssaris@gmail.com>
Tested-by: default avatarFrans Saris <franssaris@gmail.com>
parent ba5e1f24
Branches
Tags
No related merge requests found
......@@ -535,21 +535,26 @@ class LocalDriver extends AbstractHierarchicalFilesystemDriver
while ($iterator->valid()) {
/** @var $entry \SplFileInfo */
$entry = $iterator->current();
// skip non-files/non-folders, and empty entries
if ((!$entry->isFile() && !$entry->isDir()) || $entry->getFilename() == '' ||
($entry->isFile() && !$includeFiles) || ($entry->isDir() && !$includeDirs)) {
$isFile = $entry->isFile();
$isDirectory = $isFile ? false : $entry->isDir();
if (
(!$isFile && !$isDirectory) // skip non-files/non-folders
|| ($isFile && !$includeFiles) // skip files if they are excluded
|| ($isDirectory && !$includeDirs) // skip directories if they are excluded
|| $entry->getFilename() === '' // skip empty entries
) {
$iterator->next();
continue;
}
$entryIdentifier = '/' . substr($entry->getPathname(), $pathLength);
$entryName = PathUtility::basename($entryIdentifier);
if ($entry->isDir()) {
if ($isDirectory) {
$entryIdentifier .= '/';
}
$entryArray = [
'identifier' => $entryIdentifier,
'name' => $entryName,
'type' => $entry->isDir() ? 'dir' : 'file'
'type' => $isDirectory ? 'dir' : 'file'
];
$directoryEntries[$entryIdentifier] = $entryArray;
$iterator->next();
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment