使用方法: Memcached <div class="codetitle"><a style="CURSOR: pointer" data="41350" class="copybut" id="copybut41350" onclick="doCopy('code41350')"> 代码如下:<div class="codebody" id="code41350"> $cache = new Cache_MemCache(); $cache->addServer('www1'); $cache->addServer('www2',11211,20); // this server has double the memory,and gets double the weight $cache->addServer('www3',11211); // Store some data in the cache for 10 minutes $cache->store('my_key','foobar',600); // Get it out of the cache again echo($cache->fetch('my_key')); 文件缓存 <div class="codetitle"><a style="CURSOR: pointer" data="33064" class="copybut" id="copybut33064" onclick="doCopy('code33064')"> 代码如下:<div class="codebody" id="code33064"> $cache = new Cache_File(); $key = 'getUsers:selectAll'; // check if the data is not in the cache already if (!$data = $cache->fetch($key)) { // assuming there is a database connection $result = mysql_query("SELECT * FROM users"); $data = array(); // fetching all the data and putting it in an array while($row = mysql_fetch_assoc($result)) { $data[] = $row; } // Storing the data in the cache for 10 minutes $cache->store($key,$data,600); }
下载: class_cache3.php <div class="codetitle"><a style="CURSOR: pointer" data="11038" class="copybut" id="copybut11038" onclick="doCopy('code11038')"> 代码如下:<div class="codebody" id="code11038"> <?php abstract class Cache_Abstract { abstract function fetch($key); abstract function store($key,$ttl); abstract function delete($key); } class Cache_APC extends Cache_Abstract { function fetch($key) { return apc_fetch($key); } function store($key,$ttl) { return apc_store($key,$ttl); } function delete($key) { return apc_delete($key); } } class Cache_MemCache extends Cache_Abstract { public $connection; function __construct() { $this->connection = new MemCache; } function store($key,$ttl) { return $this->connection->set($key,$ttl); } function fetch($key) { return $this->connection->get($key); } function delete($key) { return $this->connection->delete($key); } function addServer($host,$port = 11211,$weight = 10) { $this->connection->addServer($host,$port,true,$weight); } } class Cache_File extends Cache_Abstract { function store($key,$ttl) { $h = fopen($this->getFileName($key),'a+'); if (!$h) throw new Exception('Could not write to cache'); flock($h,LOCK_EX); fseek($h,0); ftruncate($h,0); $data = serialize(array(time() + $ttl,$data)); if (fwrite($h,$data) === false) { throw new Exception('Could not write to cache'); } fclose($h); } function fetch($key) { $filename = $this->getFileName($key); if (!file_exists($filename)) return false; $h = fopen($filename,'r'); if (!$h) return false; flock($h,LOCK_SH); $data = file_get_contents($filename); fclose($h); $data = @ unserialize($data); if (!$data) { unlink($filename); return false; } if (time() > $data[0]) { unlink($filename); return false; } return $data[1]; } function delete($key) { $filename = $this->getFileName($key); if (file_exists($filename)) { return unlink($filename); } else { return false; } } private function getFileName($key) { return '/tmp/s_cache' . md5($key); } } ?>
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|