Diff: STRATO-apps/wordpress_03/app/wp-includes/SimplePie/src/Cache/Redis.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
3
+
// SPDX-FileCopyrightText: 2004-2023 Ryan Parman, Sam Sneddon, Ryan McCue
4
+
// SPDX-FileCopyrightText: 2015 Jan Kozak <galvani78@gmail.com>
5
+
// SPDX-License-Identifier: BSD-3-Clause
6
+
7
+
declare(strict_types=1);
8
+
9
+
namespace SimplePie\Cache;
10
+
11
+
use Redis as NativeRedis;
12
+
13
+
/**
14
+
* Caches data to redis
15
+
*
16
+
* Registered for URLs with the "redis" protocol
17
+
*
18
+
* For example, `redis://localhost:6379/?timeout=3600&prefix=sp_&dbIndex=0` will
19
+
* connect to redis on `localhost` on port 6379. All tables will be
20
+
* prefixed with `simple_primary-` and data will expire after 3600 seconds
21
+
*
22
+
* @uses Redis
23
+
* @deprecated since SimplePie 1.8.0, use implementation of "Psr\SimpleCache\CacheInterface" instead
24
+
*/
25
+
class Redis implements Base
26
+
{
27
+
/**
28
+
* Redis instance
29
+
*
30
+
* @var NativeRedis
31
+
*/
32
+
protected $cache;
33
+
34
+
/**
35
+
* Options
36
+
*
37
+
* @var array<string, mixed>
38
+
*/
39
+
protected $options;
40
+
41
+
/**
42
+
* Cache name
43
+
*
44
+
* @var string
45
+
*/
46
+
protected $name;
47
+
48
+
/**
49
+
* Create a new cache object
50
+
*
51
+
* @param string $location Location string (from SimplePie::$cache_location)
52
+
* @param string $name Unique ID for the cache
53
+
* @param Base::TYPE_FEED|Base::TYPE_IMAGE|array<string, mixed>|null $options Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
54
+
*/
55
+
public function __construct(string $location, string $name, $options = null)
56
+
{
57
+
//$this->cache = \flow\simple\cache\Redis::getRedisClientInstance();
58
+
$parsed = \SimplePie\Cache::parse_URL($location);
59
+
$redis = new NativeRedis();
60
+
$redis->connect($parsed['host'], $parsed['port']);
61
+
if (isset($parsed['pass'])) {
62
+
$redis->auth($parsed['pass']);
63
+
}
64
+
if (isset($parsed['path'])) {
65
+
$redis->select((int)substr($parsed['path'], 1));
66
+
}
67
+
$this->cache = $redis;
68
+
69
+
if (!is_null($options) && is_array($options)) {
70
+
$this->options = $options;
71
+
} else {
72
+
$this->options = [
73
+
'prefix' => 'rss:simple_primary:',
74
+
'expire' => 0,
75
+
];
76
+
}
77
+
78
+
$this->name = $this->options['prefix'] . $name;
79
+
}
80
+
81
+
/**
82
+
* @param NativeRedis $cache
83
+
* @return void
84
+
*/
85
+
public function setRedisClient(NativeRedis $cache)
86
+
{
87
+
$this->cache = $cache;
88
+
}
89
+
90
+
/**
91
+
* Save data to the cache
92
+
*
93
+
* @param array<mixed>|\SimplePie\SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
94
+
* @return bool Successfulness
95
+
*/
96
+
public function save($data)
97
+
{
98
+
if ($data instanceof \SimplePie\SimplePie) {
99
+
$data = $data->data;
100
+
}
101
+
$response = $this->cache->set($this->name, serialize($data));
102
+
if ($this->options['expire']) {
103
+
$this->cache->expire($this->name, $this->options['expire']);
104
+
}
105
+
106
+
return $response;
107
+
}
108
+
109
+
/**
110
+
* Retrieve the data saved to the cache
111
+
*
112
+
* @return array<mixed>|false Data for SimplePie::$data
113
+
*/
114
+
public function load()
115
+
{
116
+
$data = $this->cache->get($this->name);
117
+
118
+
if ($data !== false) {
119
+
return unserialize($data);
120
+
}
121
+
return false;
122
+
}
123
+
124
+
/**
125
+
* Retrieve the last modified time for the cache
126
+
*
127
+
* @return int|false Timestamp
128
+
*/
129
+
public function mtime()
130
+
{
131
+
$data = $this->cache->get($this->name);
132
+
133
+
if ($data !== false) {
134
+
return time();
135
+
}
136
+
137
+
return false;
138
+
}
139
+
140
+
/**
141
+
* Set the last modified time to the current time
142
+
*
143
+
* @return bool Success status
144
+
*/
145
+
public function touch()
146
+
{
147
+
$data = $this->cache->get($this->name);
148
+
149
+
if ($data !== false) {
150
+
$return = $this->cache->set($this->name, $data);
151
+
if ($this->options['expire']) {
152
+
return $this->cache->expire($this->name, $this->options['expire']);
153
+
}
154
+
return $return;
155
+
}
156
+
157
+
return false;
158
+
}
159
+
160
+
/**
161
+
* Remove the cache
162
+
*
163
+
* @return bool Success status
164
+
*/
165
+
public function unlink()
166
+
{
167
+
return $this->cache->set($this->name, null);
168
+
}
169
+
}
170
+
171
+
class_alias('SimplePie\Cache\Redis', 'SimplePie_Cache_Redis');
172
+