X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fcachingnoticestream.php;h=e68bb3a1f2a476ec1ba7aac218a571a5d585ebd5;hb=68621849568bed3e20eca9e02e38bed04fa3001e;hp=f8ab2a85afb4388846a00c8dd5185f251d462c5f;hpb=0dbdcf2936a00282114f1368ead2f5edebc6ae61;p=quix0rs-gnu-social.git diff --git a/lib/cachingnoticestream.php b/lib/cachingnoticestream.php index f8ab2a85af..e68bb3a1f2 100644 --- a/lib/cachingnoticestream.php +++ b/lib/cachingnoticestream.php @@ -51,11 +51,13 @@ class CachingNoticeStream extends NoticeStream public $stream = null; public $cachekey = null; + public $useLast = true; - function __construct($stream, $cachekey) + function __construct($stream, $cachekey, $useLast = true) { $this->stream = $stream; $this->cachekey = $cachekey; + $this->useLast = $useLast; } function getNoticeIds($offset, $limit, $sinceId, $maxId) @@ -85,29 +87,31 @@ class CachingNoticeStream extends NoticeStream return $ids; } - // Check the cache to see if we have a "last-known-good" version. - // The actual cache gets blown away when new notices are added, but - // the "last" value holds a lot of info. We might need to only generate - // a few at the "tip", which can bound our queries and save lots - // of time. + if ($this->useLast) { + // Check the cache to see if we have a "last-known-good" version. + // The actual cache gets blown away when new notices are added, but + // the "last" value holds a lot of info. We might need to only generate + // a few at the "tip", which can bound our queries and save lots + // of time. - $laststr = $cache->get($idkey.';last'); + $laststr = $cache->get($idkey.';last'); - if ($laststr !== false) { - $window = explode(',', $laststr); - $last_id = $window[0]; - $new_ids = $this->stream->getNoticeIds(0, self::CACHE_WINDOW, $last_id, 0); + if ($laststr !== false) { + $window = explode(',', $laststr); + $last_id = $window[0]; + $new_ids = $this->stream->getNoticeIds(0, self::CACHE_WINDOW, $last_id, 0); - $new_window = array_merge($new_ids, $window); + $new_window = array_merge($new_ids, $window); - $new_windowstr = implode(',', $new_window); + $new_windowstr = implode(',', $new_window); - $result = $cache->set($idkey, $new_windowstr); - $result = $cache->set($idkey . ';last', $new_windowstr); + $result = $cache->set($idkey, $new_windowstr); + $result = $cache->set($idkey . ';last', $new_windowstr); - $ids = array_slice($new_window, $offset, $limit); + $ids = array_slice($new_window, $offset, $limit); - return $ids; + return $ids; + } } // No cache hits :( Generate directly and stick the results @@ -118,7 +122,10 @@ class CachingNoticeStream extends NoticeStream $windowstr = implode(',', $window); $result = $cache->set($idkey, $windowstr); - $result = $cache->set($idkey . ';last', $windowstr); + + if ($this->useLast) { + $result = $cache->set($idkey . ';last', $windowstr); + } // Return just the slice that was requested