File: BagOStuffStatsStore.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (57 lines) | stat: -rw-r--r-- 1,168 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php

namespace Wikimedia\WRStats;

use Wikimedia\ObjectCache\BagOStuff;

/**
 * An adaptor allowing WRStats to store data in MediaWiki's BagOStuff
 *
 * @newable
 * @since 1.39
 */
class BagOStuffStatsStore implements StatsStore {
	/** @var BagOStuff */
	private $cache;

	/**
	 * @param BagOStuff $cache
	 */
	public function __construct( BagOStuff $cache ) {
		$this->cache = $cache;
	}

	/**
	 * @inheritDoc
	 * @suppress PhanParamTooFewUnpack
	 */
	public function makeKey( $prefix, $internals, $entity ) {
		if ( $entity->isGlobal() ) {
			return $this->cache->makeGlobalKey(
				...$prefix, ...$internals, ...$entity->getComponents() );
		} else {
			return $this->cache->makeKey(
				...$prefix, ...$internals, ...$entity->getComponents() );
		}
	}

	public function incr( array $values, $ttl ) {
		foreach ( $values as $key => $value ) {
			$this->cache->incrWithInit(
				$key,
				$ttl,
				$value,
				$value,
				BagOStuff::WRITE_BACKGROUND
			);
		}
	}

	public function delete( array $keys ) {
		$this->cache->deleteMulti( $keys, BagOStuff::WRITE_BACKGROUND );
	}

	public function query( array $keys ) {
		return $this->cache->getMulti( $keys );
	}
}