Skip to content

Commit ffdd98b

Browse files
committed
Prefixing group names in WincacheEngine
1 parent 98b14ff commit ffdd98b

2 files changed

Lines changed: 38 additions & 8 deletions

File tree

lib/Cake/Cache/Engine/WincacheEngine.php

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@
2626
*/
2727
class WincacheEngine extends CacheEngine {
2828

29+
/**
30+
* Contains the compiled group names
31+
* (prefixed witht the global configuration prefix)
32+
*
33+
* @var array
34+
**/
35+
protected $_compiledGroupNames = array();
36+
2937
/**
3038
* Initialize the Cache Engine
3139
*
@@ -142,10 +150,17 @@ public function clear($check) {
142150
* @return array
143151
**/
144152
public function groups() {
145-
$groups = wincache_ucache_get($this->settings['groups']);
153+
$groups = $this->_compiledGroupNames;
154+
if (empty($groups)) {
155+
foreach ($this->settings['groups'] as $group) {
156+
$groups[] = $this->settings['prefix'] . $group;
157+
}
158+
$this->_compiledGroupNames = $groups;
159+
}
160+
$groups = wincache_ucache_get($groups);
146161

147162
if (count($groups) !== count($this->settings['groups'])) {
148-
foreach ($this->settings['groups'] as $group) {
163+
foreach ($this->_compiledGroupNames as $group) {
149164
if (!isset($groups[$group])) {
150165
wincache_ucache_set($group, 1);
151166
$groups[$group] = 1;
@@ -168,7 +183,7 @@ public function groups() {
168183
* @return boolean success
169184
**/
170185
public function clearGroup($group) {
171-
wincache_ucache_inc($group, 1, $success);
186+
wincache_ucache_inc($this->settings['prefix'] . $group, 1, $success);
172187
return $success;
173188
}
174189

lib/Cake/Test/Case/Cache/Engine/WincacheEngineTest.php

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -198,16 +198,21 @@ public function testClear() {
198198
* @return void
199199
*/
200200
public function testGroupsReadWrite() {
201-
Cache::config('wincache_groups', array('engine' => 'Wincache', 'duration' => 0, 'groups' => array('group_a', 'group_b')));
201+
Cache::config('wincache_groups', array(
202+
'engine' => 'Wincache',
203+
'duration' => 0,
204+
'groups' => array('group_a', 'group_b'),
205+
'prefix' => 'test_'
206+
));
202207
$this->assertTrue(Cache::write('test_groups', 'value', 'wincache_groups'));
203208
$this->assertEquals('value', Cache::read('test_groups', 'wincache_groups'));
204209

205-
wincache_ucache_inc('group_a');
210+
wincache_ucache_inc('test_group_a');
206211
$this->assertFalse(Cache::read('test_groups', 'wincache_groups'));
207212
$this->assertTrue(Cache::write('test_groups', 'value2', 'wincache_groups'));
208213
$this->assertEquals('value2', Cache::read('test_groups', 'wincache_groups'));
209214

210-
wincache_ucache_inc('group_b');
215+
wincache_ucache_inc('test_group_b');
211216
$this->assertFalse(Cache::read('test_groups', 'wincache_groups'));
212217
$this->assertTrue(Cache::write('test_groups', 'value3', 'wincache_groups'));
213218
$this->assertEquals('value3', Cache::read('test_groups', 'wincache_groups'));
@@ -219,7 +224,12 @@ public function testGroupsReadWrite() {
219224
* @return void
220225
*/
221226
public function testGroupDelete() {
222-
Cache::config('wincache_groups', array('engine' => 'Wincache', 'duration' => 0, 'groups' => array('group_a', 'group_b')));
227+
Cache::config('wincache_groups', array(
228+
'engine' => 'Wincache',
229+
'duration' => 0,
230+
'groups' => array('group_a', 'group_b'),
231+
'prefix' => 'test_'
232+
));
223233
$this->assertTrue(Cache::write('test_groups', 'value', 'wincache_groups'));
224234
$this->assertEquals('value', Cache::read('test_groups', 'wincache_groups'));
225235
$this->assertTrue(Cache::delete('test_groups', 'wincache_groups'));
@@ -233,7 +243,12 @@ public function testGroupDelete() {
233243
* @return void
234244
**/
235245
public function testGroupClear() {
236-
Cache::config('wincache_groups', array('engine' => 'Wincache', 'duration' => 0, 'groups' => array('group_a', 'group_b')));
246+
Cache::config('wincache_groups', array(
247+
'engine' => 'Wincache',
248+
'duration' => 0,
249+
'groups' => array('group_a', 'group_b'),
250+
'prefix' => 'test_'
251+
));
237252

238253
$this->assertTrue(Cache::write('test_groups', 'value', 'wincache_groups'));
239254
$this->assertTrue(Cache::clearGroup('group_a', 'wincache_groups'));

0 commit comments

Comments
 (0)