Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6898 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
6749 efrain 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Cache;
6
 
6866 efrain 7
use Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory;
8
 
9
 
6749 efrain 10
class CacheImpl implements CacheInterface
11
{
12
 
6898 efrain 13
    private $memcache;
6749 efrain 14
 
15
 
16
    /**
17
     *
18
     * @var int
19
     */
20
    private $ttl;
21
 
22
 
23
    /**
24
     *
25
     * @var string
26
     */
27
    private $host;
28
 
29
 
30
    /**
31
     *
32
     * @var int
33
     */
34
    private $port;
6866 efrain 35
 
6749 efrain 36
    /**
37
     *
38
     * @param Array $config
39
     */
6866 efrain 40
    public function __construct($config)
6749 efrain 41
    {
42
        $this->ttl    = intval($config['leaderslinked.memcache.ttl'], 10);
43
        $this->host   = strval($config['leaderslinked.memcache.host']);
44
        $this->port   = intval($config['leaderslinked.memcache.port'], 10);
7047 efrain 45
 
6749 efrain 46
        if(class_exists(\Memcached::class)) {
6898 efrain 47
            $this->memcache = new \Memcached();
48
            $this->memcache->addServer($this->host, $this->port);
6749 efrain 49
        } else  if(class_exists(\Memcache::class)) {
50
            $this->memcache = new \Memcache();
51
            $this->memcache->addserver($this->host, $this->port);
52
        }
53
    }
54
 
55
    /**
56
     *
57
     * @param string $key
58
     * @param mixed $value
59
     */
6849 efrain 60
    public function setItem($key, $value)
6749 efrain 61
    {
6898 efrain 62
        return $this->memcache->add($key, $value, $this->ttl);
6749 efrain 63
    }
64
 
65
    /**
66
     *
67
     * @param string $key
68
     * @return boolean
69
     */
70
    public function touch($key)
71
    {
6898 efrain 72
        return $this->memcache->touch($key, $this->ttl);
6749 efrain 73
    }
74
 
75
 
76
    /**
77
     *
78
     * @param string $key
79
     * @return boolean
80
     */
6849 efrain 81
    public function removeItem($key)
6749 efrain 82
    {
6898 efrain 83
        return $this->memcache->delete($key);
6749 efrain 84
    }
85
 
86
 
6849 efrain 87
 
6749 efrain 88
    /**
89
     *
90
     * @param string $key
6849 efrain 91
     * @return boolean
92
     */
93
    public function hasItem($key)
94
    {
6898 efrain 95
 
96
        $value = $this->memcache->get($key);
6849 efrain 97
        if($value === \Memcached::RES_NOTFOUND) {
98
            return false;
99
        } else {
100
            return true;
101
        }
102
    }
103
 
104
 
105
    /**
106
     *
107
     * @param string $key
6749 efrain 108
     * @return mixed
109
     */
6849 efrain 110
    public function getItem($key)
6749 efrain 111
    {
6898 efrain 112
 
113
 
114
        $value = $this->memcache->get($key);
6749 efrain 115
        if($value === \Memcached::RES_NOTFOUND) {
116
            return false;
117
        } else {
118
            return $value;
119
        }
120
    }
6898 efrain 121
 
122
 
123
    /**
124
     *
125
     * @return bool
126
     */
127
    public function available()
128
    {
129
        return $this->memcache ? true : false;
130
    }
6749 efrain 131
 
132
}
133
 
134
 
135