MediaWiki REL1_31
HashBagOStuff.php
Go to the documentation of this file.
1<?php
31class HashBagOStuff extends BagOStuff {
33 protected $bag = [];
35 protected $maxCacheKeys;
36
37 const KEY_VAL = 0;
38 const KEY_EXP = 1;
39
44 function __construct( $params = [] ) {
45 parent::__construct( $params );
46
47 $this->maxCacheKeys = isset( $params['maxKeys'] ) ? $params['maxKeys'] : INF;
48 if ( $this->maxCacheKeys <= 0 ) {
49 throw new InvalidArgumentException( '$maxKeys parameter must be above zero' );
50 }
51 }
52
53 protected function expire( $key ) {
54 $et = $this->bag[$key][self::KEY_EXP];
55 if ( $et == self::TTL_INDEFINITE || $et > $this->getCurrentTime() ) {
56 return false;
57 }
58
59 $this->delete( $key );
60
61 return true;
62 }
63
71 protected function hasKey( $key ) {
72 return isset( $this->bag[$key] );
73 }
74
75 protected function doGet( $key, $flags = 0 ) {
76 if ( !$this->hasKey( $key ) ) {
77 return false;
78 }
79
80 if ( $this->expire( $key ) ) {
81 return false;
82 }
83
84 // Refresh key position for maxCacheKeys eviction
85 $temp = $this->bag[$key];
86 unset( $this->bag[$key] );
87 $this->bag[$key] = $temp;
88
89 return $this->bag[$key][self::KEY_VAL];
90 }
91
92 public function set( $key, $value, $exptime = 0, $flags = 0 ) {
93 // Refresh key position for maxCacheKeys eviction
94 unset( $this->bag[$key] );
95 $this->bag[$key] = [
96 self::KEY_VAL => $value,
97 self::KEY_EXP => $this->convertExpiry( $exptime )
98 ];
99
100 if ( count( $this->bag ) > $this->maxCacheKeys ) {
101 reset( $this->bag );
102 $evictKey = key( $this->bag );
103 unset( $this->bag[$evictKey] );
104 }
105
106 return true;
107 }
108
109 public function delete( $key ) {
110 unset( $this->bag[$key] );
111
112 return true;
113 }
114
115 public function clear() {
116 $this->bag = [];
117 }
118}
interface is intended to be more or less compatible with the PHP memcached client.
Definition BagOStuff.php:47
convertExpiry( $exptime)
Convert an optionally relative time to an absolute time.
Simple store for keeping values in an associative array for the current process.
doGet( $key, $flags=0)
hasKey( $key)
Does this bag have a non-null value for the given key?
__construct( $params=[])
int $maxCacheKeys
Max entries allowed.
design txt This is a brief overview of the new design More thorough and up to date information is available on the documentation wiki at etc Handles the details of getting and saving to the user table of the and dealing with sessions and cookies OutputPage Encapsulates the entire HTML page that will be sent in response to any server request It is used by calling its functions to add in any and then calling but I prefer the flexibility This should also do the output encoding The system allocates a global one in $wgOut Title Represents the title of an and does all the work of translating among various forms such as plain database key
Definition design.txt:26
$params