MediaWiki  master
LocalisationCacheBulkLoad.php
Go to the documentation of this file.
1 <?php
26 
31  private $fileCache = [];
32 
38  private $mruLangs = [];
39 
43  private $maxLoadedLangs = 10;
44 
50  protected function readPHPFile( $fileName, $fileType ) {
51  $serialize = $fileType === 'core';
52  if ( !isset( $this->fileCache[$fileName][$fileType] ) ) {
53  $data = parent::readPHPFile( $fileName, $fileType );
54 
55  if ( $serialize ) {
56  $encData = serialize( $data );
57  } else {
58  $encData = $data;
59  }
60 
61  $this->fileCache[$fileName][$fileType] = $encData;
62 
63  return $data;
64  } elseif ( $serialize ) {
65  return unserialize( $this->fileCache[$fileName][$fileType] );
66  } else {
67  return $this->fileCache[$fileName][$fileType];
68  }
69  }
70 
76  public function getItem( $code, $key ) {
77  unset( $this->mruLangs[$code] );
78  $this->mruLangs[$code] = true;
79 
80  return parent::getItem( $code, $key );
81  }
82 
89  public function getSubitem( $code, $key, $subkey ) {
90  unset( $this->mruLangs[$code] );
91  $this->mruLangs[$code] = true;
92 
93  return parent::getSubitem( $code, $key, $subkey );
94  }
95 
99  public function recache( $code ) {
100  parent::recache( $code );
101  unset( $this->mruLangs[$code] );
102  $this->mruLangs[$code] = true;
103  $this->trimCache();
104  }
105 
109  public function unload( $code ) {
110  unset( $this->mruLangs[$code] );
111  parent::unload( $code );
112  }
113 
117  protected function trimCache() {
118  while ( count( $this->data ) > $this->maxLoadedLangs && count( $this->mruLangs ) ) {
119  reset( $this->mruLangs );
120  $code = key( $this->mruLangs );
121  wfDebug( __METHOD__ . ": unloading $code\n" );
122  $this->unload( $code );
123  }
124  }
125 
126 }
A localisation cache optimised for loading large amounts of data for many languages.
serialize()
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
unserialize( $serialized)
$maxLoadedLangs
Maximum number of languages that may be loaded into $this->data.
$data
The cache data.
$mruLangs
Most recently used languages.
$fileCache
A cache of the contents of data files.
trimCache()
Unload cached languages until there are less than $this->maxLoadedLangs.
readPHPFile( $fileName, $fileType)