]> git.mxchange.org Git - friendica.git/blob - src/Core/Cache/MemcachedCacheDriver.php
9101c79195c4d6d66d76eaa36c484c4596e11cda
[friendica.git] / src / Core / Cache / MemcachedCacheDriver.php
1 <?php\r
2 \r
3 namespace Friendica\Core\Cache;\r
4 \r
5 use Friendica\BaseObject;\r
6 use Friendica\Core\Cache;\r
7 \r
8 /**\r
9  * Memcached Cache Driver\r
10  *\r
11  * @author Hypolite Petovan <mrpetovan@gmail.com>\r
12  */\r
13 class MemcachedCacheDriver extends BaseObject implements ICacheDriver\r
14 {\r
15         /**\r
16          * @var Memcached\r
17          */\r
18         private $memcached;\r
19 \r
20         public function __construct($memcached_host, $memcached_port)\r
21         {\r
22                 if (!class_exists('Memcached', false)) {\r
23                         throw new \Exception('Memcached class isn\'t available');\r
24                 }\r
25 \r
26                 $this->memcached = new \Memcached();\r
27 \r
28                 if (!$this->memcached->addServer($memcached_host, $memcached_port)) {\r
29                         throw new \Exception('Expected Memcached server at ' . $memcached_host . ':' . $memcached_port . ' isn\'t available');\r
30                 }\r
31         }\r
32 \r
33         public function get($key)\r
34         {\r
35                 $return = null;\r
36 \r
37                 // We fetch with the hostname as key to avoid problems with other applications\r
38                 $value = $this->memcached->get(self::getApp()->get_hostname() . ':' . $key);\r
39 \r
40                 if ($this->memcached->getResultCode() === \Memcached::RES_SUCCESS) {\r
41                         $return = $value;\r
42                 }\r
43 \r
44                 return $return;\r
45         }\r
46 \r
47         public function set($key, $value, $duration = Cache::MONTH)\r
48         {\r
49                 // We store with the hostname as key to avoid problems with other applications\r
50                 return $this->memcached->set(\r
51                         self::getApp()->get_hostname() . ":" . $key,\r
52                         $value,\r
53                         Cache::duration($duration)\r
54                 );\r
55         }\r
56 \r
57         public function delete($key)\r
58         {\r
59                 return $this->memcached->delete($key);\r
60         }\r
61 \r
62         public function clear()\r
63         {\r
64                 return true;\r
65         }\r
66 }\r