Don't keep the full info of all children in memory

This commit is contained in:
Robin Appelman 2014-09-24 15:44:56 +02:00
parent 3da6b3b533
commit f88021dbbc
1 changed files with 12 additions and 7 deletions

View File

@ -224,6 +224,17 @@ class Scanner extends BasicEmitter {
return $data; return $data;
} }
protected function getExistingChildren($path) {
$existingChildren = array();
if ($this->cache->inCache($path)) {
$children = $this->cache->getFolderContents($path);
foreach ($children as $child) {
$existingChildren[] = $child['name'];
}
}
return $existingChildren;
}
/** /**
* scan all the files and folders in a folder * scan all the files and folders in a folder
* *
@ -239,13 +250,7 @@ class Scanner extends BasicEmitter {
$this->emit('\OC\Files\Cache\Scanner', 'scanFolder', array($path, $this->storageId)); $this->emit('\OC\Files\Cache\Scanner', 'scanFolder', array($path, $this->storageId));
$size = 0; $size = 0;
$childQueue = array(); $childQueue = array();
$existingChildren = array(); $existingChildren = $this->getExistingChildren($path);
if ($this->cache->inCache($path)) {
$children = $this->cache->getFolderContents($path);
foreach ($children as $child) {
$existingChildren[] = $child['name'];
}
}
$newChildren = array(); $newChildren = array();
if ($this->storage->is_dir($path) && ($dh = $this->storage->opendir($path))) { if ($this->storage->is_dir($path) && ($dh = $this->storage->opendir($path))) {
$exceptionOccurred = false; $exceptionOccurred = false;