ApcCache::doDelete()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
cc 2
eloc 1
c 1
b 1
f 0
nc 2
nop 1
dl 0
loc 4
rs 10
1
<?php
2
3
namespace Doctrine\Common\Cache;
4
5
use const PHP_VERSION_ID;
6
use function apc_cache_info;
7
use function apc_clear_cache;
8
use function apc_delete;
9
use function apc_exists;
10
use function apc_fetch;
11
use function apc_sma_info;
12
use function apc_store;
13
14
/**
15
 * APC cache provider.
16
 *
17
 * @deprecated since version 1.6, use ApcuCache instead
18
 *
19
 * @link       www.doctrine-project.org
20
 */
21
class ApcCache extends CacheProvider
22
{
23
    /**
24
     * {@inheritdoc}
25
     */
26
    protected function doFetch($id)
27
    {
28
        return apc_fetch($id);
29
    }
30
31
    /**
32
     * {@inheritdoc}
33
     */
34
    protected function doContains($id)
35
    {
36
        return apc_exists($id);
0 ignored issues
show
Bug Best Practice introduced by
The expression return apc_exists($id) also could return the type string[] which is incompatible with the return type mandated by Doctrine\Common\Cache\CacheProvider::doContains() of boolean.
Loading history...
37
    }
38
39
    /**
40
     * {@inheritdoc}
41
     */
42
    protected function doSave($id, $data, $lifeTime = 0)
43
    {
44
        return apc_store($id, $data, $lifeTime);
0 ignored issues
show
Bug Best Practice introduced by
The expression return apc_store($id, $data, $lifeTime) also could return the type array which is incompatible with the return type mandated by Doctrine\Common\Cache\CacheProvider::doSave() of boolean.
Loading history...
45
    }
46
47
    /**
48
     * {@inheritdoc}
49
     */
50
    protected function doDelete($id)
51
    {
52
        // apc_delete returns false if the id does not exist
53
        return apc_delete($id) || ! apc_exists($id);
54
    }
55
56
    /**
57
     * {@inheritdoc}
58
     */
59
    protected function doFlush()
60
    {
61
        return apc_clear_cache() && apc_clear_cache('user');
62
    }
63
64
    /**
65
     * {@inheritdoc}
66
     */
67
    protected function doFetchMultiple(array $keys)
68
    {
69
        return apc_fetch($keys) ?: [];
70
    }
71
72
    /**
73
     * {@inheritdoc}
74
     */
75
    protected function doSaveMultiple(array $keysAndValues, $lifetime = 0)
76
    {
77
        $result = apc_store($keysAndValues, null, $lifetime);
78
79
        return empty($result);
80
    }
81
82
    /**
83
     * {@inheritdoc}
84
     */
85
    protected function doGetStats()
86
    {
87
        $info = apc_cache_info('', true);
88
        $sma  = apc_sma_info();
89
90
        // @TODO - Temporary fix @see https://github.com/krakjoe/apcu/pull/42
91
        if (PHP_VERSION_ID >= 50500) {
92
            $info['num_hits']   = $info['num_hits'] ?? $info['nhits'];
93
            $info['num_misses'] = $info['num_misses'] ?? $info['nmisses'];
94
            $info['start_time'] = $info['start_time'] ?? $info['stime'];
95
        }
96
97
        return [
98
            Cache::STATS_HITS             => $info['num_hits'],
99
            Cache::STATS_MISSES           => $info['num_misses'],
100
            Cache::STATS_UPTIME           => $info['start_time'],
101
            Cache::STATS_MEMORY_USAGE     => $info['mem_size'],
102
            Cache::STATS_MEMORY_AVAILABLE => $sma['avail_mem'],
103
        ];
104
    }
105
}
106