From 382268c6c9f778e7b435ee69c56a9407d9e8dcc2 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 24 May 2012 16:20:03 +0400 Subject: rate-limit requests for favicons when not present to conserve traffic (refs #457) --- include/rssfuncs.php | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'include/rssfuncs.php') diff --git a/include/rssfuncs.php b/include/rssfuncs.php index 84a24e2f0..9c01c9056 100644 --- a/include/rssfuncs.php +++ b/include/rssfuncs.php @@ -414,12 +414,22 @@ // db_query($link, "BEGIN"); - $result = db_query($link, "SELECT title,icon_url,site_url,owner_uid + if (DB_TYPE == "pgsql") { + $favicon_interval_qpart = "favicon_last_checked < NOW() - INTERVAL '12 hour'"; + } else { + $favicon_interval_qpart = "favicon_last_checked < DATE_SUB(NOW(), INTERVAL 12 HOUR)"; + } + + $result = db_query($link, "SELECT title,icon_url,site_url,owner_uid, + (favicon_last_checked IS NULL OR $favicon_interval_qpart) AS + favicon_needs_check FROM ttrss_feeds WHERE id = '$feed'"); $registered_title = db_fetch_result($result, 0, "title"); $orig_icon_url = db_fetch_result($result, 0, "icon_url"); $orig_site_url = db_fetch_result($result, 0, "site_url"); + $favicon_needs_check = sql_bool_to_bool(db_fetch_result($result, 0, + "favicon_needs_check")); $owner_uid = db_fetch_result($result, 0, "owner_uid"); @@ -441,7 +451,7 @@ _debug("update_rss_feed: checking favicon..."); } - check_feed_favicon($site_url, $feed, $link); + if ($favicon_needs_check) check_feed_favicon($site_url, $feed, $link); if (!$registered_title || $registered_title == "[Unknown]") { @@ -1285,7 +1295,9 @@ purge_feed($link, $feed, 0, $debug_enabled); db_query($link, "UPDATE ttrss_feeds - SET last_updated = NOW(), last_error = '' WHERE id = '$feed'"); + SET last_updated = NOW(), + favicon_last_checked = NOW(), + last_error = '' WHERE id = '$feed'"); // db_query($link, "COMMIT"); -- cgit v1.2.3-54-g00ecf