Home php教程 PHP开发 PHP Memcached + APC + file cache encapsulation implementation code

PHP Memcached + APC + file cache encapsulation implementation code

Dec 30, 2016 pm 01:34 PM

Usage:
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'));
Copy after login

File cache

$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); 
}
Copy after login

Download: 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), &#39;a+&#39;); 
if (!$h) 
throw new Exception(&#39;Could not write to cache&#39;); 
flock($h, LOCK_EX); 
fseek($h, 0); 
ftruncate($h, 0); 
$data = serialize(array(time() + $ttl, $data)); 
if (fwrite($h, $data) === false) { 
throw new Exception(&#39;Could not write to cache&#39;); 
} 
fclose($h); 
} 

function fetch($key) { 
$filename = $this->getFileName($key); 
if (!file_exists($filename)) 
return false; 
$h = fopen($filename, &#39;r&#39;); 
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 &#39;/tmp/s_cache&#39; . md5($key); 
} 

} 
?>
Copy after login

More PHP Memcached + APC + file cache encapsulation implementation code For related articles, please pay attention to the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)