diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2016-04-28 12:26:48 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2016-04-28 12:26:48 +0200 |
commit | b8114bcc33f78160b298d7a338a6a680d5ee077e (patch) | |
tree | 7ddc54143d69c3206f8c538017e062305299327e | |
parent | 76af70180d4b3f533e957bd55a134ad1018dc815 (diff) | |
download | nextcloud-server-b8114bcc33f78160b298d7a338a6a680d5ee077e.tar.gz nextcloud-server-b8114bcc33f78160b298d7a338a6a680d5ee077e.zip |
When we iterate over all users that might be too much memory
-rw-r--r-- | lib/private/user/manager.php | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/private/user/manager.php b/lib/private/user/manager.php index 8758a4667f5..4371be134aa 100644 --- a/lib/private/user/manager.php +++ b/lib/private/user/manager.php @@ -147,14 +147,19 @@ class Manager extends PublicEmitter implements IUserManager { * * @param string $uid * @param \OCP\UserInterface $backend + * @param bool $cacheUser If false the newly created user object will not be cached * @return \OC\User\User */ - protected function getUserObject($uid, $backend) { + protected function getUserObject($uid, $backend, $cacheUser = true) { if (isset($this->cachedUsers[$uid])) { return $this->cachedUsers[$uid]; } - $this->cachedUsers[$uid] = new User($uid, $backend, $this, $this->config); - return $this->cachedUsers[$uid]; + + $user = new User($uid, $backend, $this, $this->config); + if ($cacheUser) { + $this->cachedUsers[$uid] = $user; + } + return $user; } /** @@ -339,7 +344,7 @@ class Manager extends PublicEmitter implements IUserManager { if (!$backend->userExists($uid)) { continue; } - $user = $this->getUserObject($uid, $backend); + $user = $this->getUserObject($uid, $backend, false); $return = $callback($user); if ($return === false) { break; |