update_daemon_common: purge inactive/not updated feeds

This commit is contained in:
Andrew Dolgov 2013-02-26 16:16:04 +04:00
parent 4deb422655
commit 2ea09bdef6
2 changed files with 30 additions and 0 deletions

View File

@ -225,6 +225,8 @@
if ($debug) { if ($debug) {
_debug("Purged feed $feed_id ($purge_interval): deleted $rows articles"); _debug("Purged feed $feed_id ($purge_interval): deleted $rows articles");
} }
return $rows;
} // function purge_feed } // function purge_feed
function feed_purge_interval($link, $feed_id) { function feed_purge_interval($link, $feed_id) {

View File

@ -158,6 +158,34 @@
// Send feed digests by email if needed. // Send feed digests by email if needed.
send_headlines_digests($link, $debug); 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 } // function update_daemon_common
// ignore_daemon is not used // ignore_daemon is not used