From 578bb759b61e0a364163de82b9a538acee99f823 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Fri, 24 Apr 2015 00:19:17 -0700 Subject: [PATCH] Improved ActiveUsers cache staleness estimates Change-Id: Iddbdd90ff91d65f93dc51da0c8a5c0d4d0ab219f --- includes/specials/SpecialActiveusers.php | 29 +++++++++++++----------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/includes/specials/SpecialActiveusers.php b/includes/specials/SpecialActiveusers.php index 5e2ee1c2d7..047e941382 100644 --- a/includes/specials/SpecialActiveusers.php +++ b/includes/specials/SpecialActiveusers.php @@ -267,21 +267,24 @@ class SpecialActiveUsers extends SpecialPage { $out->wrapWikiMsg( "
\n$1\n
", array( 'activeusers-intro', $this->getLanguage()->formatNum( $days ) ) ); - // Get the timestamp of the last cache update + // Mention the level of cache staleness... $dbr = wfGetDB( DB_SLAVE, 'recentchanges' ); - $cTime = $dbr->selectField( 'querycache_info', - 'qci_timestamp', - array( 'qci_type' => 'activeusers' ) - ); - - $secondsOld = $cTime - ? time() - wfTimestamp( TS_UNIX, $cTime ) - : $days * 86400; // fully stale :) - - if ( $secondsOld > 0 ) { - // Mention the level of staleness - $out->addWikiMsg( 'cachedspecial-viewing-cached-ttl', + $rcMax = $dbr->selectField( 'recentchanges', 'MAX(rc_timestamp)' ); + if ( $rcMax ) { + $cTime = $dbr->selectField( 'querycache_info', + 'qci_timestamp', + array( 'qci_type' => 'activeusers' ) + ); + if ( $cTime ) { + $secondsOld = wfTimestamp( TS_UNIX, $rcMax ) - wfTimestamp( TS_UNIX, $cTime ); + } else { + $rcMin = $dbr->selectField( 'recentchanges', 'MIN(rc_timestamp)' ); + $secondsOld = time() - wfTimestamp( TS_UNIX, $rcMin ); + } + if ( $secondsOld > 0 ) { + $out->addWikiMsg( 'cachedspecial-viewing-cached-ttl', $this->getLanguage()->formatDuration( $secondsOld ) ); + } } $up = new ActiveUsersPager( $this->getContext(), null, $par ); -- 2.20.1