From aabf9dead4a2bb67f42213695740d59ceeb73457 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Niklas=20Laxstr=C3=B6m?= Date: Sat, 10 May 2008 12:55:59 +0000 Subject: [PATCH] * Use local cache as well, this might be called a lot in certain circumstances --- languages/Language.php | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/languages/Language.php b/languages/Language.php index 8738141c83..b8d2aecd8e 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -2183,21 +2183,35 @@ class Language { * Get the fallback for a given language */ static function getFallbackFor( $code ) { + // Shortcut if ( $code === 'en' ) return false; + // Local cache + static $cache = array(); + // Quick return + if ( isset($cache[$code]) ) return $cache[$code]; + + // Try memcache global $wgMemc; $memcKey = wfMemcKey( 'fallback', $code ); $fbcode = $wgMemc->get( $memcKey ); if ( is_string($fbcode) ) { - wfDebug( __METHOD__ . ": got fallback for $code from memc: '$fbcode'\n" ); + // False is stored as a string to detect failures in memcache properly if ( $fbcode === '' ) $fbcode = false; + + // Update local cache and return + $cache[$code] = $fbcode; return $fbcode; } - + + // Nothing in caches, load and and update both caches self::loadLocalisation( $code ); $fbcode = self::$mLocalisationCache[$code]['fallback']; + + $cache[$code] = $fbcode; $wgMemc->set( $memcKey, (string) $fbcode ); + return $fbcode; } -- 2.20.1