PHP Memcached + APC + file cache encapsulation implementation code
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), '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); } } ?>
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
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article
Assassin's Creed Shadows: Seashell Riddle Solution
3 weeks ago
By DDD
What's New in Windows 11 KB5054979 & How to Fix Update Issues
2 weeks ago
By DDD
Assassin's Creed Shadows - How To Find The Blacksmith And Unlock Weapon And Armour Customisation
1 months ago
By DDD
Where to find the Crane Control Keycard in Atomfall
3 weeks ago
By DDD
Roblox: Dead Rails - How To Complete Every Challenge
3 weeks ago
By DDD

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics
CakePHP Tutorial
1392
52

