X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Flibs%2Fobjectcache%2FHashBagOStuff.php;h=c74bb6e087f51e3c9934fb17330704e27bf93099;hb=50a72860b6eab430160a9504926c6aafa4fb701d;hp=d24f40854e9a0a1aab1c11ed0f928d444372b6db;hpb=3f815798a15af8ca73198b9b5d7af1b29e703a41;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/libs/objectcache/HashBagOStuff.php b/includes/libs/objectcache/HashBagOStuff.php index d24f40854e..c74bb6e087 100644 --- a/includes/libs/objectcache/HashBagOStuff.php +++ b/includes/libs/objectcache/HashBagOStuff.php @@ -49,6 +49,7 @@ class HashBagOStuff extends BagOStuff { * - maxKeys : only allow this many keys (using oldest-first eviction) */ function __construct( $params = [] ) { + $params['segmentationSize'] = $params['segmentationSize'] ?? INF; parent::__construct( $params ); $this->token = microtime( true ) . ':' . mt_rand(); @@ -75,7 +76,7 @@ class HashBagOStuff extends BagOStuff { return $this->bag[$key][self::KEY_VAL]; } - public function set( $key, $value, $exptime = 0, $flags = 0 ) { + protected function doSet( $key, $value, $exptime = 0, $flags = 0 ) { // Refresh key position for maxCacheKeys eviction unset( $this->bag[$key] ); $this->bag[$key] = [ @@ -94,14 +95,14 @@ class HashBagOStuff extends BagOStuff { } public function add( $key, $value, $exptime = 0, $flags = 0 ) { - if ( $this->get( $key ) === false ) { - return $this->set( $key, $value, $exptime, $flags ); + if ( $this->hasKey( $key ) && !$this->expire( $key ) ) { + return false; // key already set } - return false; // key already set + return $this->doSet( $key, $value, $exptime, $flags ); } - public function delete( $key, $flags = 0 ) { + protected function doDelete( $key, $flags = 0 ) { unset( $this->bag[$key] ); return true; @@ -136,7 +137,7 @@ class HashBagOStuff extends BagOStuff { return false; } - $this->delete( $key ); + $this->doDelete( $key ); return true; } @@ -148,7 +149,7 @@ class HashBagOStuff extends BagOStuff { * @return bool * @since 1.27 */ - protected function hasKey( $key ) { + public function hasKey( $key ) { return isset( $this->bag[$key] ); } }