1: | <?php
2: | namespace Opencart\System\Library\Cache;
3: | /**
4: | * Class APCU
5: | *
6: | * @package Opencart\System\Library\Cache
7: | */
8: | class Apcu {
9: | /**
10: | * @var int
11: | */
12: | private int $expire;
13: | /**
14: | * @var bool
15: | */
16: | private bool $active;
17: |
18: | /**
19: | * Constructor
20: | *
21: | * @param int $expire
22: | */
23: | public function __construct(int $expire = 3600) {
24: | $this->expire = $expire;
25: | $this->active = function_exists('apcu_cache_info') && ini_get('apc.enabled');
26: | }
27: |
28: | /**
29: | * Get
30: | *
31: | * @param string $key
32: | *
33: | * @return mixed
34: | */
35: | public function get(string $key) {
36: | return $this->active ? apcu_fetch(CACHE_PREFIX . $key) : [];
37: | }
38: |
39: | /**
40: | * Set
41: | *
42: | * @param string $key
43: | * @param mixed $value
44: | * @param int $expire
45: | *
46: | * @return void
47: | */
48: | public function set(string $key, $value, int $expire = 0): void {
49: | if (!$expire) {
50: | $expire = $this->expire;
51: | }
52: |
53: | if ($this->active) {
54: | apcu_store(CACHE_PREFIX . $key, $value, $expire);
55: | }
56: | }
57: |
58: | /**
59: | * Delete
60: | *
61: | * @param string $key
62: | *
63: | * @return void
64: | */
65: | public function delete(string $key): void {
66: | if ($this->active) {
67: | $cache_info = apcu_cache_info();
68: |
69: | $cache_list = $cache_info['cache_list'];
70: |
71: | foreach ($cache_list as $entry) {
72: | if (strpos($entry['info'], CACHE_PREFIX . $key) === 0) {
73: | apcu_delete($entry['info']);
74: | }
75: | }
76: | }
77: | }
78: |
79: | /**
80: | * Delete all cache
81: | *
82: | * @return bool
83: | */
84: | public function flush(): bool {
85: | $status = false;
86: |
87: | if (function_exists('apcu_clear_cache')) {
88: | $status = apcu_clear_cache();
89: | }
90: |
91: | return $status;
92: | }
93: | }
94: |

OpenCart API API documentation generated by ApiGen dev-master