diff options
| author | 2020-05-10 21:34:12 +0200 | |
|---|---|---|
| committer | 2020-05-10 21:34:12 +0200 | |
| commit | aea38065901408c8b6d0bb0b619f21fd81fc9347 (patch) | |
| tree | 13ca86572069d9f76d5c7f24777fa61a4a15c8f8 /app/Controllers | |
| parent | be10486f5e45148c78ab0c0a57a4056d5fc2889a (diff) | |
Attempt to reduce max memory usage during actualize (#2955)
* Attempt to reduce max memory usage during actualize
#Fix https://github.com/FreshRSS/FreshRSS/issues/2952
* Use memory_get_peak_usage
Diffstat (limited to 'app/Controllers')
| -rwxr-xr-x | app/Controllers/feedController.php | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php index a2dcd360f..de0e6f9a1 100755 --- a/app/Controllers/feedController.php +++ b/app/Controllers/feedController.php @@ -333,9 +333,9 @@ class FreshRSS_feed_Controller extends Minz_ActionController { $needFeedCacheRefresh = false; - // We want chronological order and SimplePie uses reverse order. - $entries = array_reverse($feed->entries()); - if (count($entries) > 0) { + $entries = $feed->entries(); + $nbEntries = count($entries); + if ($nbEntries > 0) { $newGuids = array(); foreach ($entries as $entry) { $newGuids[] = safe_ascii($entry->guid()); @@ -346,7 +346,8 @@ class FreshRSS_feed_Controller extends Minz_ActionController { $oldGuids = array(); // Add entries in database if possible. - foreach ($entries as $entry) { + for ($i = 0; $i < $nbEntries; $i++) { + $entry = $entries[$i]; if (isset($newGuids[$entry->guid()])) { continue; //Skip subsequent articles with same GUID } @@ -405,9 +406,12 @@ class FreshRSS_feed_Controller extends Minz_ActionController { $entryDAO->addEntry($entry->toArray()); $nb_new_articles++; } + unset($entry); + unset($entries[$i]); } $entryDAO->updateLastSeen($feed->id(), $oldGuids, $mtime); } + unset($entries); if (mt_rand(0, 30) === 1) { // Remove old entries once in 30. if (!$entryDAO->inTransaction()) { @@ -455,6 +459,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { $feed->unlock(); $updated_feeds++; unset($feed); + gc_collect_cycles(); // No more than $maxFeeds feeds unless $force is true to avoid overloading // the server. |
