Merge pull request #24327 from owncloud/better-callForAllUsers-performance
Better callForAllUsers memory usage
This commit is contained in:
commit
d7eb17bdc0
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -335,11 +340,11 @@ class Manager extends PublicEmitter implements IUserManager {
|
|||
$offset = 0;
|
||||
do {
|
||||
$users = $backend->getUsers($search, $limit, $offset);
|
||||
foreach ($users as $user) {
|
||||
$user = $this->get($user);
|
||||
if (is_null($user)) {
|
||||
foreach ($users as $uid) {
|
||||
if (!$backend->userExists($uid)) {
|
||||
continue;
|
||||
}
|
||||
$user = $this->getUserObject($uid, $backend, false);
|
||||
$return = $callback($user);
|
||||
if ($return === false) {
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue