Rev 16769 | Rev 17002 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Cache;class CacheImpl implements CacheInterface{/**** @var \Memcached|\Memcache*/private $memcached;/**** @var int*/private $ttl;/**** @var string*/private $host;/**** @var int*/private $port;/**** @param Array $config*/public function __construct($config){$this->ttl = intval($config['leaderslinked.memcache.ttl'], 10);$this->host = strval($config['leaderslinked.memcache.host']);$this->port = intval($config['leaderslinked.memcache.port'], 10);if(class_exists(\Memcached::class)) {$this->memcached = new \Memcached();$this->memcached->addServer($this->host, $this->port);} else if(class_exists(\Memcache::class)) {$this->memcached = new \Memcache();$this->memcached->addserver($this->host, $this->port);}}/**** @param string $key* @param mixed $value*/public function setItem($key, $value){if($this->memcached) {$this->memcached->add($key, $value, $this->ttl);} else {$filename = $this->getFilename($key);return file_put_contents($filename, serialize($value));}}/**** @param string $key* @return boolean*/public function touch($key){if($this->memcached) {return $this->memcached->touch($key, $this->ttl);} else {$filename = $this->getFilename($key);if(file_exists($filename)) {return touch($filename);} else {return true;}}}/**** @param string $key* @return boolean*/public function removeItem($key){if($this->memcached) {return $this->memcached->delete($key);} else {$filename = $this->getFilename($key);if(file_exists($filename)) {return unlink($filename);} else {return true;}}}/**** @param string $key* @return boolean*/public function hasItem($key){if($this->memcached) {$value = $this->memcached->get($key);if($value === \Memcached::RES_NOTFOUND) {return false;} else {return empty($value) ? false : true;}} else {$filename = $this->getFilename($key);return file_exists($filename);}}/**** @param string $key* @return mixed*/public function getItem($key){if($this->memcached) {$value = $this->memcached->get($key);if($value === \Memcached::RES_NOTFOUND) {return false;} else {return $value;}} else {$filename = $this->getFilename($key);if(file_exists($filename)) {return unserialize(file_get_contents($filename));} else {return null;}}}/**** @param string $key* @return string*/private function getFilename($key){$filepath = 'data' . DIRECTORY_SEPARATOR . 'cache';if(!file_exists($filepath)) {@mkdir($filepath, 0755);}return $filepath . DIRECTORY_SEPARATOR . $key . '.json';}}