From 2ea09bdef63cd8e968bf537585fa338f773f93ca Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 26 Feb 2013 16:16:04 +0400 Subject: [PATCH] update_daemon_common: purge inactive/not updated feeds --- include/functions.php | 2 ++ include/rssfuncs.php | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/include/functions.php b/include/functions.php index 72d86e0a..57272078 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 c3ac1073..b82a872f 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 -- 2.39.2