Rumah php教程 PHP开发 PHP Memcached + APC + 文件缓存封装实现代码

PHP Memcached + APC + 文件缓存封装实现代码

Dec 30, 2016 pm 01:34 PM

使用方法: 
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'));
Salin selepas log masuk

文件缓存

$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); 
}
Salin selepas log masuk

下载: 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); 
} 

} 
?>
Salin selepas log masuk

更多PHP Memcached + APC + 文件缓存封装实现代码相关文章请关注PHP中文网!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)