15/5/6 下午8:53 */ class PhalApi_Cache_Memcache implements PhalApi_Cache { protected $memcache = null; protected $prefix; /** * @param string $config['host'] Memcache域名,多个用英文逗号分割 * @param int/string $config['port'] Memcache端口,多个用英文逗号分割 * @param int/string $config['weight'] Memcache权重,多个用英文逗号分割 * @param string $config['prefix'] Memcache key prefix */ public function __construct($config) { $this->memcache = $this->createMemcache(); $hostArr = explode(',', $config['host']); $portArr = explode(',', $config['port']); $weightArr = isset($config['weight']) ? explode(',', $config['weight']) : array(); foreach ($hostArr as $idx => $host) { $this->memcache->addServer( trim($host), isset($portArr[$idx]) ? intval($portArr[$idx]) : 11211, isset($weightArr[$idx]) ? intval($weightArr[$idx]) : 0 ); } $this->prefix = isset($config['prefix']) ? $config['prefix'] : 'phalapi_'; } public function set($key, $value, $expire = 600) { $this->memcache->set($this->formatKey($key), @serialize($value), 0, $expire); } public function get($key) { $value = $this->memcache->get($this->formatKey($key)); return $value !== FALSE ? @unserialize($value) : NULL; } public function delete($key) { return $this->memcache->delete($this->formatKey($key)); } /** * 获取MC实例,以便提供桩入口 * @return Memcache */ protected function createMemcache() { return new Memcache(); } protected function formatKey($key) { return $this->prefix . $key; } }