사용 방법:
Memcached
复代码 代码如下:
$cache = new Cache_MemCache();
$cache->addServer('www1');
$cache->addServer('www2',11211,20); // 이 서버는 메모리가 두 배이고 무게도 두 배로 늘어납니다.
$cache->addServer('www3',11211);
// 일부 데이터를 10분 동안 캐시에 저장합니다.
$cache->store('my_key','foobar',600);
// 다시 캐시에서 꺼내세요
echo($cache->fetch('my_key'));
复代码 代码如下:
$cache = new Cache_File() ;
$key = 'getUsers:selectAll';
// 데이터가 이미 캐시에 없는지 확인
if (!$data = $cache->fetch($key)) {
// 데이터베이스 연결이 있다고 가정
$result = mysql_query("SELECT * FROM 사용자");
$data = 배열();
// 모든 데이터를 가져와 배열에 넣습니다.
while($row = mysql_fetch_assoc($result)) { $data[] = $row; }
// 10분간 캐시에 데이터 저장
$cache->store($key,$data,600);
}
复主代码 代码如下:
추상 클래스 Cache_Abstract {
추상 함수 fetch($key);
추상 함수 저장소($key, $data, $ttl);
추상 함수 delete($key);
}
class Cache_APC extends Cache_Abstract {
function fetch($key) {
return apc_fetch($key);
}
함수 store($key, $data, $ttl) {
return apc_store($key, $data, $ttl);
}
function delete($key) {
return apc_delete($key);
}
}
class Cache_MemCache 확장 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 확장 Cache_Abstract {
function store($key, $data, $ttl) {
$h = fopen($this->getFileName($key) , 'a');
if (!$h)
throw new Exception('캐시에 쓸 수 없습니다');
군집($h, LOCK_EX);
fseek($h, 0);
ftruncate($h, 0);
$data = serialize(array(time() $ttl, $data));
if (fwrite($h, $data) === false) {
throw new Exception('캐시에 쓸 수 없습니다.');
}
fclose($h);
}
function fetch($key) {
$filename = $this->getFileName($key);
if (!file_exists($filename))
false를 반환합니다.
$h = fopen($filename, 'r');
if (!$h)
false를 반환;
군집($h, LOCK_SH);
$data = file_get_contents($filename);
fclose($h);
$data = @ unserialize($data);
if (!$data) {
unlink($filename);
거짓을 반환합니다.
}
if (time() > $data[0]) {
unlink($filename);
거짓을 반환합니다.
}
$data[1] 반환;
}
function delete($key) {
$filename = $this->getFileName($key);
if (file_exists($filename)) {
return unlink($filename);
}
else {
false를 반환합니다.
}
}
비공개 함수 getFileName($key) {
return '/tmp/s_cache' . md5($키);
}
}
?>
以上就介绍了Memcached PHP Memcached APC 文件缓存封装实现代码, 包括了Memcached방면적 内容, 希望对PHP教程有兴趣的朋友所帮助.