`
pcajax
  • 浏览: 2163022 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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 + 文件缓存封装实现代码

    综上所述,合理利用PHP Memcached、APC和文件缓存封装类,可以大幅提高应用程序的运行效率和用户体验。在实际应用中,还应该注意缓存数据的一致性、有效性和安全性问题,避免因缓存导致的数据不一致或过期问题影响到...

    解析php缓存类.zip

    PHP缓存主要分为两种类型:内存缓存(如APC, Memcached, Redis)和文件缓存(如FileCache, Zend Cache)。内存缓存将数据存储在服务器的内存中,提供高速的读取速度,但数据会在服务器重启时丢失。文件缓存则是将...

    php在线管理文件

    1. 文件缓存:对于大文件或频繁访问的文件,可以考虑使用缓存技术,如APC、Memcached或Redis,减少磁盘I/O操作。 2. 文件索引:建立文件索引可以加速文件查找,例如使用SQLite或MySQL数据库存储文件信息。 3. 多...

    带有缓存功能的mysqli数据库操作类

    在这个mysqli数据库操作类中,可能采用了某种缓存策略,比如文件缓存或者PHP内置的APC(Alternative PHP Cache)或OPcache,来存储查询结果,当相同的查询再次执行时,可以从缓存中直接获取,避免了重复的数据库查询...

    XDO是一个PHP数据类它包括了数据库缓存和上传

    它支持多种缓存后端,如APC、Memcached和Redis等。利用这些缓存系统,可以将频繁访问的数据存储在内存中,减少对数据库的直接访问,从而提高响应速度。XDO的缓存管理特性包括: 1. **键值对存储**:通过简单的键值...

    php+mysql网站

    - 缓存技术:如使用PHP的APC、Memcached或Redis进行数据缓存,减少数据库访问压力。 - 错误日志:通过`error_reporting()`和`ini_set('log_errors', 1)`设置错误报告和日志记录。 - 页面压缩:开启PHP的zlib输出...

    PHP专题——重点函数_静态化_缓存_面向对象_异常处理

    缓存技术,如使用memcached或APC,可以存储经常访问的数据,避免重复计算,显著提升响应速度。例如,WordPress的WP Super Cache插件就实现了PHP页面的静态化。 【面向对象编程(OOP)】 PHP的面向对象编程允许...

    PHP实例开发源码——Compxler PHP版.zip

    12. **性能优化**:可能包含缓存策略(如APC、Memcached、Redis)、代码优化技巧等。 13. **错误日志和调试**:了解如何配置和使用PHP的错误日志系统,以及使用如Xdebug这样的调试工具。 通过研究这个项目,开发者...

    php+mysql 经典案例分析

    13. 性能优化:包括缓存技术(如APC、Memcached、Redis)、数据库查询优化、减少HTTP请求等,都是提升Web应用性能的重要手段。 以上就是《PHP+MySQL经典案例分析》中涉及的主要知识点,通过这些知识的学习和实践,...

    PHP实例开发源码—PHP夸克自助建站系统开源版.zip

    10. **缓存机制**:了解如何使用PHP内置的缓存技术,如APC、Memcached或Redis,提高系统性能。 通过对这个开源项目的探索和实践,你不仅可以提升PHP编程技能,还能掌握Web开发的整体流程和最佳实践,为未来开发更...

    PHP参考的压缩文件

    - **缓存技术**:如APC、Memcached、Redis,用于提高性能。 这些文件组合起来,很可能是一个简单的PHP项目,包含了图像处理、代码逻辑和可能的数据库交互。要深入理解每个文件的内容,需要实际查看源代码并根据上...

    基于PHP的OurPHP傲派企业+电商建站系统.zip

    为了提升性能,OurPHP可能会实现缓存策略,如文件缓存、内存缓存(如APC、Memcached、Redis)等,减少对数据库的访问。 7. **路由与URL重写** 基于PHP的框架通常具备URL路由功能,可以将用户请求映射到相应的控制...

    php+myslq使用手册.rar

    4. PHP缓存技术:如何利用MySQL的内存表或PHP的缓存技术(如APC、Memcached、Redis)提高应用程序性能。 这份手册对于初学者和经验丰富的开发者都是宝贵的资源,它不仅提供理论知识,还有大量的实例和最佳实践,...

    PHP API (PHP初学者教程)

    - 缓存技术:使用PHP缓存如APC、Memcached或Redis提升应用性能。 - 代码优化:遵循最佳实践,减少不必要的计算和数据库查询。 通过这个PHP初学者教程,你将能够系统地学习PHP API,掌握其核心概念和常用函数,为...

    基于PHP的营养膳食查询工具 php v1.0.zip

    此外,为了数据安全和性能优化,可能还应用了PHP的预处理语句(如PDO或MySQLi)、错误处理机制、以及缓存技术(如APC或Memcached)。 总之,"基于PHP的营养膳食查询工具 php v1.0.zip" 是一个用PHP编写的,旨在提供...

    韩顺平老师PHP面试题大全上卷基础篇+下卷高级篇有答案

    1. PHP性能优化:如何通过缓存技术(如APC、Memcached、Redis)提升网站性能,以及代码优化技巧。 2. PHP框架与开发模式:介绍常见PHP框架(如Laravel、Symfony、Yii等),以及MVC设计模式和面向服务架构(SOA)。 ...

    利用 Cache_Lite代替codeigniter中的cache功能

    为了在CodeIgniter中使用Cache_Lite,你需要先下载并包含MP_Cache.php文件,这是一个包含Cache_Lite类的自定义封装。然后,创建一个实例并调用其方法来执行缓存操作,如下所示: ```php require_once 'MP_Cache....

    PHP入门之PHP教程100例.rar

    19. **缓存技术**:使用PHP的APC、Memcached或Redis进行数据缓存,提升网站性能。 20. **Web服务**:理解RESTful API,使用PHP构建API接口。 这个压缩包中的"阅读器下载.htm"可能是提供阅读或解压教程的指引,"E书...

    php基础学习

    同时,了解如何使用memcached或redis进行数据缓存也是提高效率的关键。 3. **ADO**:在PHP中,ADO主要通过COM(Component Object Model)扩展实现,允许PHP与Microsoft SQL Server等数据库交互。虽然在现代PHP开发...

Global site tag (gtag.js) - Google Analytics