PHP文件缓存类

 1 <?php
 2     /**
 3      * @desc 文件缓存
 4      */
 5     class Cache{
 6         const C_FILE = ‘/Runtime/‘;
 7         private $dir = ‘‘;
 8         const EXT = ‘.tpl‘;
 9         private $filename = ‘‘;
10         public function __construct($dir = ‘‘){
11             $this->dir = $dir;
12
13         }
14         /**
15          *    @desc 设置文件缓存
16          *    @param string $key 文件名
17          *    @param unkonw $data 缓存数据
18          *    @param int    $expire 过期时间
19          */
20         public function set($key,$data,$expire = 0){
21             $this->filename =     dirname(__FILE__).self::C_FILE.$this->dir.$key.self::EXT;
22             if(file_exists($this->filename)){
23                 $res = $this->get($key);
24                 if(md5($res) == md5(json_encode($data) ) ){
25                     return true;
26                 }
27             }
28             if(!is_dir(dirname($this->filename))){
29                 mkdir(dirname($this->filename),0777);
30             }
31
32             $source = fopen($this->filename,‘w+‘);
33             fwrite($source,json_encode($data));
34             fclose($source);
35         }
36
37         /**
38          *    @desc 获取文件
39          *  @param string $key 文件名
40          */
41         public function get($key){
42             //$filename = dirname(__FILE__).self::C_FILE.$this->dir.$key.self::EXT;
43             if(!file_exists($this->filename)){
44                 return ‘缓存文件已经不存在‘;
45             }else{
46                 $res = file_get_contents($this->filename);
47             }
48             return $res;
49         }
50         /**
51          *    @desc 删除文件
52          *  @param string $key 文件名
53          */
54         public function del($key){
55             unlink($this->filename);
56         }
57
58     }
59
60     $data = array(‘name‘=>‘song‘,‘age‘=>20,‘sex‘=>‘man‘,‘favority‘=>array(‘apple‘,‘banana‘));
61     $cache = new Cache();
62     $cache->set(‘cache‘,$data);
63     //$cache->get(‘cache‘);
64     //$cache->del(‘cache‘);
时间: 2024-08-05 05:09:21

PHP文件缓存类的相关文章

PHP高效文件缓存类FCache

自己用的阿里云低配置,最近访问不错,经常出现mysql崩溃的问题,提单说请加内存,这回复还不如直接说:请交钱! 于是自己在git找了php的文件缓存,发现都是将缓存放到一个缓存文件!!!意味着: 1.无论你是读取多大的数据,都需要从磁盘读出整个文件到内存,然后解析,获取你要的部分数据: 2.在缓存数据很大的时候,并不能起到缓存加速网站访问的目的,同时增加磁盘的读写负荷: 3.在某一个临界点,可能会导致缓存性能比数据库还差: 4.未经过严格测试,个人预估一般网站的数据都会达到100M以上,如果每次

一个不错的PHP文件页面缓存类

在php中缓存分类数据库缓存,文件缓存和内存缓存,下面我来给各位同学详细介绍PHP文件缓存类实现代码,有需要了解的朋友可参考. 页面缓存类  代码如下 复制代码 <?php    /*    * 缓存类    cache   * 作    者:多菜鸟   * 实    例:   */   /*include( "cache.php" );       $cache = new cache(30);   $cache->cacheCheck();       echo dat

SD卡创建文件夹失败,解决办法及文件缓存

1.相关代码: 添加权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> /** 获取SD卡路径 **/ private static String getSDPath() { St

php 文件缓存

http://www.oschina.net/code/snippet_162279_6098 <?php class cache {       private static $_instance = null;     protected $_options = array(         'cache_dir'        => "./",         'file_name_prefix' => 'cache',         'mode'      

android文件缓存,并SD卡创建目录未能解决和bitmap内存溢出解决

1.相关代码: 加入权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> /** 获取SD卡路径 **/ private static String getSDPath() { St

Volley随笔之文件缓存DiskBasedCache类

Volley提供了一个基于文件的缓存类DiskBasedCache保存缓存数据.这个类完成缓存工作的原理大致如此,首先声明一个文件夹,文件夹下的文件与cacheKey一一对应,也就是说每一个文件时不同网络请求的返回数据.文件的格式是这样,文件头是数据结构CacheHeader,描述了缓存的信息,之后就是缓存数据. 下面是DiskBasedCache的代码,不得不说很优美! /*  * Copyright (C) 2011 The Android Open Source Project * * L

缓存处理类(MemoryCache结合文件缓存)

想提升站点的性能,于是增加了缓存,但是站点不会太大,于是不会到分布式memcached的缓存和redis这个nosql库,于是自己封装了.NET内置的缓存组件 原先使用System.Web.Caching.Cache,但是asp.net会在System.Web.Caching.Cache缓存页面等数据,于是替换了System.Web.Caching.Cache为MemoryCache. 而在使用MemoryCache的时候,重新启动网站会丢失缓存,于是加了自己的扩展,将缓存序列化存放在文件内,在

iOS缓存类的设计

使用执行速度缓存的程序可以大大提高程序,设计一个简单的缓存类并不需要太复杂的逻辑. 只需要一个简单的3接口. 存款对象 以一个对象 删除对象 阅读对象 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdXh5aGVhdmVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" > 读取对象的时候先读内存 内存没有就读文件 保存对象 保存对象的时候前台

【cocos2d-x游戏开发】cocos中的三种缓存类

Cocos中有三种缓存类: (1):纹理缓存:TextureCache (2):精灵帧缓存:SpriteFrameCache (3):动画缓存:AnimationCache 游戏最要重要的就是流畅度,如果我们的游戏经常因为加载资源出现卡顿的情况,那么这个游戏就没有很好地游戏体验.所以,为了解决这个问题,缓存就应运而生了. 缓存的目的就是:现将所需资源加载到内存中,之后再次使用该资源的时候,就可以直接从内存中读出,而不需要重新加载,从而减少了CPU和GPU的内存占用. TextureCache 在