`
天梯梦
  • 浏览: 13730182 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

实现简单 codeigniter 缓存 (cache)

阅读更多

代码

 

class Test extends Controller {
 
	function main()
	{
 
		// load the library
		$this->load->library('simple_cache');
 
		// key is the name you have given to the cached data
		// will check if the item is cached
		if (!$this->simple_cache->is_cached('key'))
		{
			// not cached, do our things that need caching
			$data = array('print' => 'Hello World');
 
			// store in cache
			$this->simple_cache->cache_item('key', $data);
 
		} else {
			$data = $this->simple_cache->get_item('key');
		}
 
		$this->load->view('hello', $data);
	}
 
}
 

 

simple cache library

 

<?php

/*

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/


class Simple_cache {

	public $expire_after = 300;
	public $cache_file   = BASEPATH.'cache/';

	function Simple_cache($life_time = '')
	{
		if (!empty($life_time))
		{
			 $this->expire_after = $life_time;
		}
	}

	function cache_item($key, $value)
	{
		if(!is_dir($this->cache_file))
		{
			$temp = explode('/',$this->cache_file);  
			$cur_dir = '';  
			for($i = 0; $i < count($temp); $i++)
			{  
				$cur_dir .= $temp[$i].'/';  
				if (!is_dir($cur_dir))
				{  
					@mkdir($cur_dir,0755);  
				}  
			}  
		}

		if(!empty($value))
		{
			file_put_contents($this->cache_file.sha1($key).'.cache', serialize($value));	
		}
	}
	
	function is_cached($key)
	{
		if (file_exists($this->cache_file.sha1($key).'.cache')){
		{			
			if((filectime($this->cache_file.sha1($key).'.cache')+$this->expire_after) >= time()))
			{
				return true;
			}else{
				delete_item($key);
				return false;
			}
		} else {
			return false;			
		}		
	}
	
	function get_item($key)
	{
		$item = file_get_contents($this->cache_file.sha1($key).'.cache');
		return unserialize($item);
	}
	
	function delete_item($key)
	{
		unlink($this->cache_file.sha1($key).'.cache');
	}

	function clear_all(){

	}

}
 

 

 

 

 

分享到:
评论

相关推荐

    利用 Cache_Lite代替codeigniter中的cache功能

    本文将深入探讨如何使用Cache_Lite替代CodeIgniter内置的缓存功能,以及这样做的潜在好处。 Cache_Lite是PHP的一个轻量级缓存库,由Fabien Potencier创建。它允许开发者在本地文件系统中存储数据,以快速访问经常...

    Simple-Cache-for-CodeIgniter:用于CodeIgniter的简单缓存是基于GNU通用公共许可证发行的基于开源文件的片段缓存库-Open source php source code

    CodeIgniter自述文件的简单缓存 由开发,并根据GNU通用公共许可证发行(请参阅LICENSE)。 关于 用于CodeIgniter的简单缓存是基于GNU通用公共许可证发行的基于开源文件的片段缓存库。 它被设计为易于使用,并且很...

    CodeIgniter启用缓存和清除缓存的方法

    **注意**:CodeIgniter只缓存通过视图(View)文件输出的内容,确保`application/cache`目录具有可写权限,否则无法生成缓存文件。 **清除缓存** 要停用缓存,只需从控制器的方法中移除上述启用缓存的代码。然而,...

    让CodeIgniter数据库缓存自动过期的处理的方法

    CodeIgniter框架是一个非常小巧的PHP框架。CI自带数据库文件缓存,但按官方的说法,缓存设置后永不过期,除非你调用方法主动删除。Cache files DO NOT expire. Any queries that have been cached will remain ...

    codeigniter 代码实例分享

    6. **cache**:CodeIgniter的缓存目录,用于存储预编译的视图文件或其他缓存数据,以提高网站性能。 7. **database**:可能包含数据库配置文件(通常是application/config/database.php),用于连接和管理数据库。...

    MP_Cache用户指南(中英文对译版)

    MP_Cache 是一个针对 CodeIgniter 框架设计的高级缓存解决方案,它提供了比 CodeIgniter 内置缓存机制更为灵活的功能。MP_Cache 的主要目标是帮助开发者更高效地存储和管理各种类型的数据,从简单的单个变量到复杂的...

    Codeigniter框架整合Smarty引擎DEMO

    在本DEMO中,我们将探讨如何在CodeIgniter框架中集成Smarty,实现MVC模式下的模板处理。 首先,你需要确保已经安装了CodeIgniter框架。如果没有,可以从官方站点下载最新版本并解压到你的服务器或本地开发环境中。...

    codeIgniter-multi-level-cache:简单的修改即可将缓存文件存储到多级子文件夹中

    CodeIgniter多级缓存简单的修改就可以将缓存文件存储到多级子文件夹中。 Codeigniter的基于文件的缓存系统将完全呈现HTML和SQL对象的输出,当用户访问您的网页时,Codeigniter将从没有MySQL连接的缓存文件中加载数据...

    Codeigniter出现错误提示Error with CACHE directory的解决方案

    通常,清除缓存可以通过Codeigniter的配置设置,或者直接在cache目录中删除旧的文件和子目录来实现。 最后,在解决“Error with CACHE directory”之后,建议定期检查并调整文件系统的权限设置,确保其符合最小权限...

    无涯教程(LearnFk)-Codeigniter教程离线版.pdf

    CodeIgniter的安装过程非常简单,只需要按照以下步骤操作: 1. 从官方网站下载最新版本的CodeIgniter。 2. 解压缩下载的文件夹。 3. 将所有文件和文件夹上传到服务器。 4. 通过浏览器访问服务器的URL(例如***)...

    用CodeIgniter框架快速构建企业门户网站.pdf

    * 如果缓存 (Cache) 文件存在,它将绕过常规的系统执行顺序,被直接发送给浏览器 * 安全 (Security) 应用程序控制器装载之前,HTTP 请求和任何用户提交的数据将被过滤 * 控制器 (Controller) 装载模型、核心库、插件...

    CI框架中redis缓存相关操作文件示例代码_.docx

    `CI_Cache_redis`类中提供了多个方法来实现对Redis缓存的操作: - **`keys()`**: 获取缓存中的所有键名,参数为可选的模式匹配字符串,返回结果为一个包含所有匹配键名的数组。 - **`get()`**: 根据提供的键名获取...

    CodeIgniter框架实现的整合Smarty引擎DEMO示例

    通过上述步骤,即可将Smarty模板引擎整合到CodeIgniter框架中,开发人员可以利用Smarty提供的模板处理能力,在CodeIgniter项目中实现更加丰富和灵活的视图逻辑。整合过程需要注意路径配置的准确性以及类的继承关系,...

    CodeIgniter文档 mysql操作

    只需开启`$this-&gt;db-&gt;cache_on()`,框架会自动处理缓存。不过需要注意,这不适用于动态内容。 9. **错误处理** 当发生数据库错误时,可以通过`$this-&gt;db-&gt;_error_number()`和`$this-&gt;db-&gt;_error_message()`获取...

    CI框架数据库查询缓存优化的方法

    CI(CodeIgniter)框架提供了一种数据库查询缓存机制,可以帮助开发者显著提高查询效率,减少数据库负载。本文将详细讲解如何在CI框架中实现数据库查询缓存的优化。 1. 开启数据库查询缓存 要启用CI框架的数据库...

    CI框架网页缓存简单用法分析

    在CodeIgniter中,开启缓存的操作非常简单,只需在控制器的相应方法内添加一行代码即可。例如,如果你希望对当前页面缓存10分钟,可以使用以下代码: ```php $this-&gt;output-&gt;cache(10); ``` 这里的参数`$n`代表...

Global site tag (gtag.js) - Google Analytics