PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.2.0
Independent Analytics – WordPress Analytics Plugin v2.2.0
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / doctrine / cache / lib / Doctrine / Common / Cache / MemcachedCache.php
independent-analytics / vendor / doctrine / cache / lib / Doctrine / Common / Cache Last commit date
Psr6 2 years ago ApcCache.php 2 years ago ApcuCache.php 2 years ago ArrayCache.php 2 years ago Cache.php 2 years ago CacheProvider.php 2 years ago ChainCache.php 2 years ago ClearableCache.php 2 years ago CouchbaseBucketCache.php 2 years ago CouchbaseCache.php 2 years ago ExtMongoDBCache.php 2 years ago FileCache.php 2 years ago FilesystemCache.php 2 years ago FlushableCache.php 2 years ago InvalidCacheId.php 2 years ago LegacyMongoDBCache.php 2 years ago MemcacheCache.php 2 years ago MemcachedCache.php 2 years ago MongoDBCache.php 2 years ago MultiDeleteCache.php 2 years ago MultiGetCache.php 2 years ago MultiOperationCache.php 2 years ago MultiPutCache.php 2 years ago PhpFileCache.php 2 years ago PredisCache.php 2 years ago RedisCache.php 2 years ago SQLite3Cache.php 2 years ago Version.php 2 years ago VoidCache.php 2 years ago WinCacheCache.php 2 years ago XcacheCache.php 2 years ago ZendDataCache.php 2 years ago
MemcachedCache.php
144 lines
1 <?php
2
3 namespace IAWP_SCOPED\Doctrine\Common\Cache;
4
5 use Memcached;
6 use function array_keys;
7 use function preg_match;
8 use function strlen;
9 use function strpos;
10 use function time;
11 /**
12 * Memcached cache provider.
13 *
14 * @deprecated Deprecated without replacement in doctrine/cache 1.11. This class will be dropped in 2.0
15 *
16 * @link www.doctrine-project.org
17 * @internal
18 */
19 class MemcachedCache extends CacheProvider
20 {
21 public const CACHE_ID_MAX_LENGTH = 250;
22 /** @var Memcached|null */
23 private $memcached;
24 /**
25 * Sets the memcache instance to use.
26 *
27 * @return void
28 */
29 public function setMemcached(Memcached $memcached)
30 {
31 $this->memcached = $memcached;
32 }
33 /**
34 * Gets the memcached instance used by the cache.
35 *
36 * @return Memcached|null
37 */
38 public function getMemcached()
39 {
40 return $this->memcached;
41 }
42 /**
43 * {@inheritdoc}
44 */
45 protected function doFetch($id)
46 {
47 return $this->memcached->get($id);
48 }
49 /**
50 * {@inheritdoc}
51 */
52 protected function doFetchMultiple(array $keys)
53 {
54 return $this->memcached->getMulti($keys) ?: [];
55 }
56 /**
57 * {@inheritdoc}
58 */
59 protected function doSaveMultiple(array $keysAndValues, $lifetime = 0)
60 {
61 foreach (array_keys($keysAndValues) as $id) {
62 $this->validateCacheId($id);
63 }
64 if ($lifetime > 30 * 24 * 3600) {
65 $lifetime = time() + $lifetime;
66 }
67 return $this->memcached->setMulti($keysAndValues, $lifetime);
68 }
69 /**
70 * {@inheritdoc}
71 */
72 protected function doContains($id)
73 {
74 $this->memcached->get($id);
75 return $this->memcached->getResultCode() === Memcached::RES_SUCCESS;
76 }
77 /**
78 * {@inheritdoc}
79 */
80 protected function doSave($id, $data, $lifeTime = 0)
81 {
82 $this->validateCacheId($id);
83 if ($lifeTime > 30 * 24 * 3600) {
84 $lifeTime = time() + $lifeTime;
85 }
86 return $this->memcached->set($id, $data, (int) $lifeTime);
87 }
88 /**
89 * {@inheritdoc}
90 */
91 protected function doDeleteMultiple(array $keys)
92 {
93 return $this->memcached->deleteMulti($keys) || $this->memcached->getResultCode() === Memcached::RES_NOTFOUND;
94 }
95 /**
96 * {@inheritdoc}
97 */
98 protected function doDelete($id)
99 {
100 return $this->memcached->delete($id) || $this->memcached->getResultCode() === Memcached::RES_NOTFOUND;
101 }
102 /**
103 * {@inheritdoc}
104 */
105 protected function doFlush()
106 {
107 return $this->memcached->flush();
108 }
109 /**
110 * {@inheritdoc}
111 */
112 protected function doGetStats()
113 {
114 $stats = $this->memcached->getStats();
115 $servers = $this->memcached->getServerList();
116 $key = $servers[0]['host'] . ':' . $servers[0]['port'];
117 $stats = $stats[$key];
118 return [Cache::STATS_HITS => $stats['get_hits'], Cache::STATS_MISSES => $stats['get_misses'], Cache::STATS_UPTIME => $stats['uptime'], Cache::STATS_MEMORY_USAGE => $stats['bytes'], Cache::STATS_MEMORY_AVAILABLE => $stats['limit_maxbytes']];
119 }
120 /**
121 * Validate the cache id
122 *
123 * @see https://github.com/memcached/memcached/blob/1.5.12/doc/protocol.txt#L41-L49
124 *
125 * @param string $id
126 *
127 * @return void
128 *
129 * @throws InvalidCacheId
130 */
131 private function validateCacheId($id)
132 {
133 if (strlen($id) > self::CACHE_ID_MAX_LENGTH) {
134 throw InvalidCacheId::exceedsMaxLength($id, self::CACHE_ID_MAX_LENGTH);
135 }
136 if (strpos($id, ' ') !== \false) {
137 throw InvalidCacheId::containsUnauthorizedCharacter($id, ' ');
138 }
139 if (preg_match('/[\\t\\r\\n]/', $id) === 1) {
140 throw InvalidCacheId::containsControlCharacter($id);
141 }
142 }
143 }
144