Add some caching to the group counts.
authorChad Horohoe <demon@users.mediawiki.org>
Thu, 28 Aug 2008 01:09:40 +0000 (01:09 +0000)
committerChad Horohoe <demon@users.mediawiki.org>
Thu, 28 Aug 2008 01:09:40 +0000 (01:09 +0000)
includes/SiteStats.php

index 48df848..e64a624 100644 (file)
@@ -114,9 +114,16 @@ class SiteStats {
         */
        static function numberingroup($group) {
                if ( !isset( self::$groupMemberCounts[$group] ) ) {
-                       $dbr = wfGetDB( DB_SLAVE );
-                       self::$groupMemberCounts[$group] = $dbr->selectField( 'user_groups', 'COUNT(*)', 
+                       global $wgMemc;
+                       $key = wfMemcKey( 'SiteStats', 'groupcounts', $group );
+                       $hit = $wgMemc->get( $key );
+                       if ( !$hit ) {
+                               $dbr = wfGetDB( DB_SLAVE );
+                               $hit = $dbr->selectField( 'user_groups', 'COUNT(*)', 
                                                                                                        array( 'ug_group' => $group ), __METHOD__ );
+                               $wgMemc->set( $key, $hit, 3600 );
+                       }
+                       self::$groupMemberCounts[$group] = $hit;
                }
                return self::$groupMemberCounts[$group];                
        }