aboutsummaryrefslogtreecommitdiff
path: root/app/Controllers
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2020-05-10 21:34:12 +0200
committerGravatar GitHub <noreply@github.com> 2020-05-10 21:34:12 +0200
commitaea38065901408c8b6d0bb0b619f21fd81fc9347 (patch)
tree13ca86572069d9f76d5c7f24777fa61a4a15c8f8 /app/Controllers
parentbe10486f5e45148c78ab0c0a57a4056d5fc2889a (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-xapp/Controllers/feedController.php13
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.