aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--includes/cache/MapCacheLRU.php6
-rw-r--r--includes/parser/CoreParserFunctions.php13
2 files changed, 11 insertions, 8 deletions
diff --git a/includes/cache/MapCacheLRU.php b/includes/cache/MapCacheLRU.php
index a22d8023d64c..95e3af769ec4 100644
--- a/includes/cache/MapCacheLRU.php
+++ b/includes/cache/MapCacheLRU.php
@@ -57,7 +57,7 @@ class MapCacheLRU {
* @return void
*/
public function set( $key, $value ) {
- if ( isset( $this->cache[$key] ) ) {
+ if ( array_key_exists( $key, $this->cache ) ) {
$this->ping( $key ); // push to top
} elseif ( count( $this->cache ) >= $this->maxCacheKeys ) {
reset( $this->cache );
@@ -74,7 +74,7 @@ class MapCacheLRU {
* @return bool
*/
public function has( $key ) {
- return isset( $this->cache[$key] );
+ return array_key_exists( $key, $this->cache );
}
/**
@@ -86,7 +86,7 @@ class MapCacheLRU {
* @return mixed
*/
public function get( $key ) {
- if ( isset( $this->cache[$key] ) ) {
+ if ( array_key_exists( $key, $this->cache ) ) {
$this->ping( $key ); // push to top
return $this->cache[$key];
} else {
diff --git a/includes/parser/CoreParserFunctions.php b/includes/parser/CoreParserFunctions.php
index cd1f32dc4c7f..983fc1489f86 100644
--- a/includes/parser/CoreParserFunctions.php
+++ b/includes/parser/CoreParserFunctions.php
@@ -1000,7 +1000,10 @@ class CoreParserFunctions {
* @since 1.23
*/
private static function getCachedRevisionObject( $parser, $title = null ) {
- static $cache = array();
+ static $cache = null;
+ if ( !isset( $cache ) ) {
+ $cache = new MapCacheLRU( 100 );
+ }
if ( is_null( $title ) ) {
return null;
@@ -1021,21 +1024,21 @@ class CoreParserFunctions {
// Normalize name for cache
$page = $title->getPrefixedDBkey();
- if ( array_key_exists( $page, $cache ) ) { // cache contains null values
- return $cache[$page];
+ if ( $cache->has( $page ) ) { // cache contains null values
+ return $cache->get( $page );
}
if ( $parser->incrementExpensiveFunctionCount() ) {
$rev = Revision::newFromTitle( $title, false, Revision::READ_NORMAL );
$pageID = $rev ? $rev->getPage() : 0;
$revID = $rev ? $rev->getId() : 0;
- $cache[$page] = $rev; // maybe null
+ $cache->set( $page, $rev ); // maybe null
// Register dependency in templatelinks
$parser->getOutput()->addTemplate( $title, $pageID, $revID );
return $rev;
}
- $cache[$page] = null;
+ $cache->set( $page, null );
return null;
}