aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre.alapetite@alexandra.dk> 2016-10-05 17:48:24 +0200
committerGravatar Alexandre Alapetite <alexandre.alapetite@alexandra.dk> 2016-10-05 17:48:24 +0200
commitfe65eec5bbdaee37177e3673e31e241b1f1b938d (patch)
treef3869c4691ddf8723fddbe6640729881cb1b2665
parent9e34d7275eb936e1a08b872aca7adbce5a5674c5 (diff)
Better multiuser update
-rwxr-xr-xapp/Controllers/feedController.php9
-rw-r--r--app/Models/FeedDAO.php10
2 files changed, 12 insertions, 7 deletions
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php
index d85a53446..dadc8aa83 100755
--- a/app/Controllers/feedController.php
+++ b/app/Controllers/feedController.php
@@ -271,13 +271,14 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
if ($ttl == -1) {
continue; //Feed refresh is disabled
}
- if ($feed->lastUpdate() < time() + 60 - ($ttl == -2 ? FreshRSS_Context::$user_conf->ttl_default : $ttl)) {
+ if ($feed->lastUpdate() + 10 >= time() - ($ttl == -2 ? FreshRSS_Context::$user_conf->ttl_default : $ttl)) {
//Too early to refresh from source, but check whether the feed was updated by another user
$mtime = $feed->cacheModifiedTime();
- if ($feed->lastUpdate() >= $mtime + 10) {
+ if ($feed->lastUpdate() + 10 >= $mtime) {
continue; //Nothing newer from other users
}
- Minz_Log::debug($feed->url() . ' was recently updated by another user');
+ //Minz_Log::debug($feed->url() . ' was updated at ' . date('c', $mtime) . ' by another user');
+ //Will take advantage of the newer cache
}
if (!$feed->lock()) {
@@ -391,7 +392,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
}
}
- $feedDAO->updateLastUpdate($feed->id(), 0, $entryDAO->inTransaction());
+ $feedDAO->updateLastUpdate($feed->id(), false, $entryDAO->inTransaction(), $mtime);
if ($entryDAO->inTransaction()) {
$entryDAO->commit();
}
diff --git a/app/Models/FeedDAO.php b/app/Models/FeedDAO.php
index ad3cb0c2e..c680d270c 100644
--- a/app/Models/FeedDAO.php
+++ b/app/Models/FeedDAO.php
@@ -82,7 +82,7 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo implements FreshRSS_Searchable {
}
}
- public function updateLastUpdate($id, $inError = 0, $updateCache = true) {
+ public function updateLastUpdate($id, $inError = false, $updateCache = true, $mtime = 0) {
if ($updateCache) {
$sql = 'UPDATE `' . $this->prefix . 'feed` ' //2 sub-requests with FOREIGN KEY(e.id_feed), INDEX(e.is_read) faster than 1 request with GROUP BY or CASE
. 'SET `cache_nbEntries`=(SELECT COUNT(e1.id) FROM `' . $this->prefix . 'entry` e1 WHERE e1.id_feed=`' . $this->prefix . 'feed`.id),'
@@ -95,9 +95,13 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo implements FreshRSS_Searchable {
. 'WHERE id=?';
}
+ if ($mtime <= 0) {
+ $mtime = time();
+ }
+
$values = array(
- time(),
- $inError,
+ $mtime,
+ $inError ? 1 : 0,
$id,
);