时间:2016-02-24 19:26 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【PHP Memcached + APC + 文件缓存封装】,下面是详细的分享!
PHP Memcached + APC + 文件缓存封装
使用方法:
Memcached
| $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')); |
文件缓存
| $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
| <?php abstract class Cache_Abstract { abstract function fetch($key); abstract function store($key, $data, $ttl); abstract function delete($key); } class Cache_APC extends Cache_Abstract { function fetch($key) { return apc_fetch($key); } function store($key, $data, $ttl) { return apc_store($key, $data, $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, $data, $ttl) { return $this->connection->set($key, $data, 0, $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, $data, $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); } } ?> |
以上所分享的是关于PHP Memcached + APC + 文件缓存封装,下面是编辑为你推荐的有价值的用户互动:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
