summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2014-03-14 11:20:41 +0300
committerAndrew Dolgov <[email protected]>2014-03-14 11:20:41 +0300
commit453ed4848e9f953aed30ace1180b4fec3c24fcd2 (patch)
tree63274788bccfdb2c33cf6e427a4efb084835fcf6
parentad593e43933d4908c361d5bc23d448ebd931eae6 (diff)
parentf77c72038f9a001e8cf2e37213714a2d350d4810 (diff)
Merge pull request #353 from rangerer/feed_caching_fix
Feed caching fix
-rw-r--r--include/rssfuncs.php38
1 files changed, 19 insertions, 19 deletions
diff --git a/include/rssfuncs.php b/include/rssfuncs.php
index 0b88ef989..4044d1f85 100644
--- a/include/rssfuncs.php
+++ b/include/rssfuncs.php
@@ -183,7 +183,7 @@
while ($tline = db_fetch_assoc($tmp_result)) {
if($debug) _debug(" => " . $tline["last_updated"] . ", " . $tline["id"] . " " . $tline["owner_uid"]);
- $rss = update_rss_feed($tline["id"], true, false, $rss);
+ $rss = update_rss_feed($tline["id"], true, false);
_debug_suppress(false);
++$nf;
}
@@ -267,7 +267,13 @@
$force_refetch = isset($_REQUEST["force_refetch"]);
- if (file_exists($cache_filename) &&
+ foreach ($pluginhost->get_hooks(PluginHost::HOOK_FETCH_FEED) as $plugin) {
+ $feed_data = $plugin->hook_fetch_feed($feed_data, $fetch_url, $owner_uid, $feed);
+ }
+
+ // try cache
+ if (!$feed_data &&
+ file_exists($cache_filename) &&
is_readable($cache_filename) &&
!$auth_login && !$auth_pass &&
filemtime($cache_filename) > time() - 30) {
@@ -283,14 +289,8 @@
} else {
_debug("local cache will not be used for this feed", $debug_enabled);
}
- }
-
- if (!$rss) {
-
- foreach ($pluginhost->get_hooks(PluginHost::HOOK_FETCH_FEED) as $plugin) {
- $feed_data = $plugin->hook_fetch_feed($feed_data, $fetch_url, $owner_uid, $feed);
- }
+ // fetch feed from source
if (!$feed_data) {
_debug("fetching [$fetch_url]...", $debug_enabled);
_debug("If-Modified-Since: ".gmdate('D, d M Y H:i:s \G\M\T', $last_article_timestamp), $debug_enabled);
@@ -329,6 +329,16 @@
}
}
} */
+
+ // cache vanilla feed data for re-use
+ if ($feed_data && !$auth_pass && !$auth_login && is_writable(CACHE_DIR . "/simplepie")) {
+ $new_rss_hash = sha1($feed_data);
+
+ if ($new_rss_hash != $rss_hash) {
+ _debug("saving $cache_filename", $debug_enabled);
+ @file_put_contents($cache_filename, $feed_data);
+ }
+ }
}
if (!$feed_data) {
@@ -380,16 +390,6 @@
if (!$rss->error()) {
- // cache data for later
- if (!$auth_pass && !$auth_login && is_writable(CACHE_DIR . "/simplepie")) {
- $new_rss_hash = sha1($feed_data);
-
- if ($new_rss_hash != $rss_hash && count($rss->get_items()) > 0 ) {
- _debug("saving $cache_filename", $debug_enabled);
- @file_put_contents($cache_filename, $feed_data);
- }
- }
-
// We use local pluginhost here because we need to load different per-user feed plugins
$pluginhost->run_hooks(PluginHost::HOOK_FEED_PARSED, "hook_feed_parsed", $rss);