diff options
| -rw-r--r-- | app/Controllers/feedController.php | 8 | ||||
| -rw-r--r-- | app/Models/Feed.php | 4 |
2 files changed, 9 insertions, 3 deletions
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php index e5685dddf..a17e596c7 100644 --- a/app/Controllers/feedController.php +++ b/app/Controllers/feedController.php @@ -385,10 +385,14 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController { } if ($simplePiePush === null && $feed_id === 0 && (time() <= $feed->lastUpdate() + $ttl)) { //Too early to refresh from source, but check whether the feed was updated by another user - if ($mtime <= 0 || $feed->lastUpdate() >= $mtime) { + $ε = 10; // negligible offset errors in seconds + if ($mtime <= 0 || + $feed->lastUpdate() + $ε >= $mtime || + time() + $ε >= $mtime + FreshRSS_Context::$system_conf->limits['cache_duration']) { // is cache still valid? continue; //Nothing newer from other users } - Minz_Log::debug('Feed ' . $feed->url(false) . ' was updated at ' . date('c', $mtime) . ' by another user; will take advantage of the newer cache.'); + Minz_Log::debug('Feed ' . $feed->url(false) . ' was updated at ' . date('c', $feed->lastUpdate()) . + ', and at ' . date('c', $mtime) . ' by another user; take advantage of newer cache.'); } if (!$feed->lock()) { diff --git a/app/Models/Feed.php b/app/Models/Feed.php index 2baee9e0d..80d4e4580 100644 --- a/app/Models/Feed.php +++ b/app/Models/Feed.php @@ -859,7 +859,9 @@ class FreshRSS_Feed extends Minz_Model { /** @return int|false */ public function cacheModifiedTime() { - return @filemtime(FreshRSS_Feed::cacheFilename($this->url, $this->attributes(), $this->kind)); + $filename = FreshRSS_Feed::cacheFilename($this->url, $this->attributes(), $this->kind); + clearstatcache(true, $filename); + return @filemtime($filename); } public function lock(): bool { |
