summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-02-26 16:16:04 +0400
committerAndrew Dolgov <[email protected]>2013-02-26 16:16:04 +0400
commit2ea09bdef63cd8e968bf537585fa338f773f93ca (patch)
treebc068d92fe34367cb42abed8c638dd1595f654d1 /include
parent4deb4226559106f732673c048cb4c9e10c9fddf8 (diff)
update_daemon_common: purge inactive/not updated feeds
Diffstat (limited to 'include')
-rw-r--r--include/functions.php2
-rw-r--r--include/rssfuncs.php28
2 files changed, 30 insertions, 0 deletions
diff --git a/include/functions.php b/include/functions.php
index 72d86e0a7..572720787 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -225,6 +225,8 @@
if ($debug) {
_debug("Purged feed $feed_id ($purge_interval): deleted $rows articles");
}
+
+ return $rows;
} // function purge_feed
function feed_purge_interval($link, $feed_id) {
diff --git a/include/rssfuncs.php b/include/rssfuncs.php
index c3ac10730..b82a872f4 100644
--- a/include/rssfuncs.php
+++ b/include/rssfuncs.php
@@ -158,6 +158,34 @@
// Send feed digests by email if needed.
send_headlines_digests($link, $debug);
+ // Purge feeds with stale data OR not being updated for a while to keep DB size down
+
+ if ($debug) _debug("Purging inactive feeds...");
+
+ if (DB_TYPE == "pgsql") {
+ $interval_qpart = "NOW() - INTERVAL '1 month'";
+ } else {
+ $interval_qpart = "DATE_SUB(NOW(), INTERVAL 1 MONTH)";
+ }
+
+ $result = db_query($link, "SELECT id, feed_url FROM ttrss_feeds WHERE
+ (SELECT MAX(updated) FROM ttrss_entries, ttrss_user_entries WHERE
+ ttrss_entries.id = ref_id AND
+ ttrss_user_entries.feed_id = ttrss_feeds.id) < $interval_qpart OR
+ last_updated < $interval_qpart");
+
+ $feeds_purged = 0;
+ $articles_removed = 0;
+
+ while ($line = db_fetch_assoc($result)) {
+ $articles_removed += purge_feed($link, $line["id"], 0, false);
+ ++$feeds_purged;
+ }
+
+ if ($debug && $articles_removed > 0)
+ _debug(sprintf("Purged %d feeds (%d articles).", $feeds_purged,
+ $articles_removed));
+
} // function update_daemon_common
// ignore_daemon is not used