aboutsummaryrefslogtreecommitdiff
path: root/app/Controllers/feedController.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2020-05-17 00:04:51 +0200
committerGravatar GitHub <noreply@github.com> 2020-05-17 00:04:51 +0200
commit83b5944dcbb09db0accd528be4906b88590d924f (patch)
tree78d171edbdb96e898723f20f09274818b5f97f82 /app/Controllers/feedController.php
parent525e1ca0b0b9e2aaf9e8c2450ceb0a1a20dd71b7 (diff)
Stream instead of memory copy of SimplePie entries (#2972)
* Stream instead of memory copy of SimplePie entries https://github.com/FreshRSS/FreshRSS/issues/2952 * Undo lines delete * Typo * Remove unaccessible code https://github.com/FreshRSS/FreshRSS/pull/2972/files#r425624163 * Back-compatibility for Feed->entries https://github.com/FreshRSS/FreshRSS/pull/2972/files#r425631913
Diffstat (limited to 'app/Controllers/feedController.php')
-rwxr-xr-xapp/Controllers/feedController.php19
1 files changed, 6 insertions, 13 deletions
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php
index de0e6f9a1..b8ccaf963 100755
--- a/app/Controllers/feedController.php
+++ b/app/Controllers/feedController.php
@@ -320,10 +320,12 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
try {
if ($simplePiePush) {
- $feed->loadEntries($simplePiePush); //Used by PubSubHubbub
+ $simplePie = $simplePiePush; //Used by WebSub
} else {
- $feed->load(false, $isNewFeed);
+ $simplePie = $feed->load(false, $isNewFeed);
}
+ $newGuids = $simplePie == null ? [] : $feed->loadGuids($simplePie);
+ $entries = $simplePie == null ? [] : $feed->loadEntries($simplePie);
} catch (FreshRSS_Feed_Exception $e) {
Minz_Log::warning($e->getMessage());
$feedDAO->updateLastUpdate($feed->id(), true);
@@ -333,21 +335,14 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
$needFeedCacheRefresh = false;
- $entries = $feed->entries();
- $nbEntries = count($entries);
- if ($nbEntries > 0) {
- $newGuids = array();
- foreach ($entries as $entry) {
- $newGuids[] = safe_ascii($entry->guid());
- }
+ if (count($newGuids) > 0) {
// For this feed, check existing GUIDs already in database.
$existingHashForGuids = $entryDAO->listHashForFeedGuids($feed->id(), $newGuids);
$newGuids = array();
$oldGuids = array();
// Add entries in database if possible.
- for ($i = 0; $i < $nbEntries; $i++) {
- $entry = $entries[$i];
+ foreach ($entries as $entry) {
if (isset($newGuids[$entry->guid()])) {
continue; //Skip subsequent articles with same GUID
}
@@ -406,8 +401,6 @@ 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);
}