From: Thomas Tanghus Date: Sun, 8 Jul 2012 22:16:14 +0000 (+0200) Subject: Rescan categories in small batches to reduce memory usage. X-Git-Tag: v4.5.0beta1~74^2~372^2~30 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=47aaca49a11997ed2d0d6a92df730f42df77d88c;p=nextcloud-server.git Rescan categories in small batches to reduce memory usage. --- diff --git a/apps/contacts/lib/app.php b/apps/contacts/lib/app.php index 25461877e62..f125ec0293c 100644 --- a/apps/contacts/lib/app.php +++ b/apps/contacts/lib/app.php @@ -196,16 +196,19 @@ class OC_Contacts_App { foreach($vcaddressbooks as $vcaddressbook) { $vcaddressbookids[] = $vcaddressbook['id']; } - $vccontacts = OC_Contacts_VCard::all($vcaddressbookids); - } - } - if(is_array($vccontacts) && count($vccontacts) > 0) { - $cards = array(); - foreach($vccontacts as $vccontact) { - $cards[] = $vccontact['carddata']; + $start = 0; + $batchsize = 10; + while($vccontacts = OC_Contacts_VCard::all($vcaddressbookids, $start, $batchsize)){ + $cards = array(); + foreach($vccontacts as $vccontact) { + $cards[] = $vccontact['carddata']; + } + OCP\Util::writeLog('contacts',__CLASS__.'::'.__METHOD__.', scanning: '.$batchsize.' starting from '.$start,OCP\Util::DEBUG); + // only reset on first batch. + self::getVCategories()->rescan($cards, true, ($start==0?true:false)); + $start += $batchsize; + } } - - self::$categories->rescan($cards); } }