diff options
author | Andrew Dolgov <[email protected]> | 2017-12-01 10:17:18 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2017-12-01 10:17:18 +0300 |
commit | d9e60c0f68931c2e6ff8cdf3a941be2504bca16f (patch) | |
tree | ed3521e96fb910d69d21c3222d9cb6f0e754c3de | |
parent | 99bda9cc12cd39907adc6b76dc3bee4e9241b52b (diff) | |
parent | e50c8eaa4e21599272565612a576435e6c0763ba (diff) |
Merge branch 'master' of git.fakecake.org:tt-rss into pdo-experimental
-rw-r--r-- | classes/rssutils.php | 28 | ||||
-rw-r--r-- | include/functions.php | 5 | ||||
-rw-r--r-- | schema/ttrss_schema_mysql.sql | 3 | ||||
-rw-r--r-- | schema/ttrss_schema_pgsql.sql | 3 | ||||
-rw-r--r-- | schema/versions/mysql/133.sql | 7 | ||||
-rw-r--r-- | schema/versions/pgsql/133.sql | 7 |
6 files changed, 37 insertions, 16 deletions
diff --git a/classes/rssutils.php b/classes/rssutils.php index d6fe048f9..f6326720d 100644 --- a/classes/rssutils.php +++ b/classes/rssutils.php @@ -312,7 +312,8 @@ class RSSUtils { feed_url,auth_pass,cache_images, mark_unread_on_update, owner_uid, auth_pass_encrypted, feed_language, - last_modified + last_modified, + ".SUBSTRING_FOR_DATE."(last_unconditional, 1, 19) AS last_unconditional FROM ttrss_feeds WHERE id = '$feed'"); $owner_uid = db_fetch_result($result, 0, "owner_uid"); @@ -333,6 +334,7 @@ class RSSUtils { } $stored_last_modified = db_fetch_result($result, 0, "last_modified"); + $last_unconditional = db_fetch_result($result, 0, "last_unconditional"); $cache_images = sql_bool_to_bool(db_fetch_result($result, 0, "cache_images")); $fetch_url = db_fetch_result($result, 0, "feed_url"); $feed_language = db_escape_string(mb_strtolower(db_fetch_result($result, 0, "feed_language"))); @@ -384,21 +386,21 @@ class RSSUtils { // fetch feed from source if (!$feed_data) { - _debug("stored last modified: $stored_last_modified", $debug_enabled); - _debug("fetching [$fetch_url]...", $debug_enabled); + _debug("last unconditional update request: $last_unconditional"); if (ini_get("open_basedir") && function_exists("curl_init")) { _debug("not using CURL due to open_basedir restrictions"); } - /*$feed_data = fetch_file_contents($fetch_url, false, - $auth_login, $auth_pass, false, - $no_cache ? FEED_FETCH_NO_CACHE_TIMEOUT : FEED_FETCH_TIMEOUT, - 0);*/ + if (time() - strtotime($last_unconditional) > MAX_CONDITIONAL_INTERVAL) { + _debug("maximum allowed interval for conditional requests exceeded, forcing refetch"); + + $force_refetch = true; + } else { + _debug("stored last modified for conditional request: $stored_last_modified", $debug_enabled); + } - // TODO: last_modified should be limited, if the feed has not been updated for a while - // we probably should force one update without the header - // unfortunately last_updated gets bumped on http 304 so that daemon would work properly + _debug("fetching [$fetch_url] (force_refetch: $force_refetch)...", $debug_enabled); $feed_data = fetch_file_contents([ "url" => $fetch_url, @@ -553,7 +555,7 @@ class RSSUtils { _debug("no articles found.", $debug_enabled); db_query("UPDATE ttrss_feeds - SET last_updated = NOW(), last_error = '' WHERE id = '$feed'"); + SET last_updated = NOW(), last_unconditional = NOW(), last_error = '' WHERE id = '$feed'"); return; // no articles } @@ -1140,7 +1142,7 @@ class RSSUtils { purge_feed($feed, 0, $debug_enabled); db_query("UPDATE ttrss_feeds - SET last_updated = NOW(), last_error = '' WHERE id = '$feed'"); + SET last_updated = NOW(), last_unconditional = NOW(), last_error = '' WHERE id = '$feed'"); // db_query("COMMIT"); @@ -1158,7 +1160,7 @@ class RSSUtils { db_query( "UPDATE ttrss_feeds SET last_error = '$error_msg', - last_updated = NOW() WHERE id = '$feed'"); + last_updated = NOW(), last_unconditional = NOW() WHERE id = '$feed'"); unset($rss); return; diff --git a/include/functions.php b/include/functions.php index ed6f78eef..277975c5c 100644 --- a/include/functions.php +++ b/include/functions.php @@ -1,6 +1,6 @@ <?php define('EXPECTED_CONFIG_VERSION', 26); - define('SCHEMA_VERSION', 132); + define('SCHEMA_VERSION', 133); define('LABEL_BASE_INDEX', -1024); define('PLUGIN_FEED_BASE_INDEX', -128); @@ -57,6 +57,9 @@ // do not cache files smaller than that (bytes) define_default('CACHE_MAX_DAYS', 7); // max age in days for various automatically cached (temporary) files + define_default('MAX_CONDITIONAL_INTERVAL', 3600*6); + // max interval between forced unconditional updates for servers + // not complying with http if-modified-since (seconds) /* tunables end here */ diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql index 67a22e6d9..ce299f4e0 100644 --- a/schema/ttrss_schema_mysql.sql +++ b/schema/ttrss_schema_mysql.sql @@ -102,6 +102,7 @@ create table ttrss_feeds (id integer not null auto_increment primary key, update_interval integer not null default 0, purge_interval integer not null default 0, last_updated datetime default null, + last_unconditional datetime default null, last_error varchar(250) not null default '', last_modified varchar(250) not null default '', favicon_avg_color varchar(11) default null, @@ -283,7 +284,7 @@ create table ttrss_tags (id integer primary key auto_increment, create table ttrss_version (schema_version int not null) ENGINE=InnoDB DEFAULT CHARSET=UTF8; -insert into ttrss_version values (132); +insert into ttrss_version values (133); create table ttrss_enclosures (id integer primary key auto_increment, content_url text not null, diff --git a/schema/ttrss_schema_pgsql.sql b/schema/ttrss_schema_pgsql.sql index 7870b4b37..9f3975353 100644 --- a/schema/ttrss_schema_pgsql.sql +++ b/schema/ttrss_schema_pgsql.sql @@ -72,6 +72,7 @@ create table ttrss_feeds (id serial not null primary key, update_interval integer not null default 0, purge_interval integer not null default 0, last_updated timestamp default null, + last_unconditional timestamp default null, last_error text not null default '', last_modified text not null default '', favicon_avg_color varchar(11) default null, @@ -265,7 +266,7 @@ create index ttrss_tags_post_int_id_idx on ttrss_tags(post_int_id); create table ttrss_version (schema_version int not null); -insert into ttrss_version values (132); +insert into ttrss_version values (133); create table ttrss_enclosures (id serial not null primary key, content_url text not null, diff --git a/schema/versions/mysql/133.sql b/schema/versions/mysql/133.sql new file mode 100644 index 000000000..e1693a9cb --- /dev/null +++ b/schema/versions/mysql/133.sql @@ -0,0 +1,7 @@ +begin; + +alter table ttrss_feeds add column last_unconditional datetime null; + +UPDATE ttrss_version SET schema_version = 133; + +commit; diff --git a/schema/versions/pgsql/133.sql b/schema/versions/pgsql/133.sql new file mode 100644 index 000000000..7bf2f9fa6 --- /dev/null +++ b/schema/versions/pgsql/133.sql @@ -0,0 +1,7 @@ +begin; + +alter table ttrss_feeds add column last_unconditional timestamp null; + +UPDATE ttrss_version SET schema_version = 133; + +commit; |