X-Git-Url: https://git.cyclocoop.org/%242?a=blobdiff_plain;f=includes%2Flibs%2Fobjectcache%2FWinCacheBagOStuff.php;h=cae0280128b80d8f965a2ee55f1cfc79e8f4c963;hb=fea9ebbd6f6065fa686c3bf089049335888f3a2f;hp=9c6c907c0298d1ee51373e5eca748d32ff8a5b3c;hpb=f8ee3aea3f04d4c2a4b551d553b1b9694816f0eb;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/libs/objectcache/WinCacheBagOStuff.php b/includes/libs/objectcache/WinCacheBagOStuff.php index 9c6c907c02..cae0280128 100644 --- a/includes/libs/objectcache/WinCacheBagOStuff.php +++ b/includes/libs/objectcache/WinCacheBagOStuff.php @@ -40,12 +40,16 @@ class WinCacheBagOStuff extends BagOStuff { public function set( $key, $value, $expire = 0, $flags = 0 ) { $result = wincache_ucache_set( $key, serialize( $value ), $expire ); - /* wincache_ucache_set returns an empty array on success if $value - * was an array, bool otherwise */ - return ( is_array( $result ) && $result === [] ) || $result; + return ( $result === [] || $result === true ); } - public function delete( $key ) { + public function add( $key, $value, $exptime = 0, $flags = 0 ) { + $result = wincache_ucache_add( $key, serialize( $value ), $exptime ); + + return ( $result === [] || $result === true ); + } + + public function delete( $key, $flags = 0 ) { wincache_ucache_delete( $key ); return true; @@ -97,4 +101,27 @@ class WinCacheBagOStuff extends BagOStuff { return $keyspace . ':' . implode( ':', $args ); } + + /** + * Increase stored value of $key by $value while preserving its original TTL + * @param string $key Key to increase + * @param int $value Value to add to $key (Default 1) + * @return int|bool New value or false on failure + */ + public function incr( $key, $value = 1 ) { + if ( !$this->lock( $key ) ) { + return false; + } + $n = $this->get( $key ); + if ( $this->isInteger( $n ) ) { // key exists? + $n += intval( $value ); + $oldTTL = wincache_ucache_info( false, $key )["ucache_entries"][1]["ttl_seconds"]; + $this->set( $key, max( 0, $n ), $oldTTL ); + } else { + $n = false; + } + $this->unlock( $key ); + + return $n; + } }