0

0

php文件缓存数据_PHP教程

php中文网

php中文网

发布时间:2016-07-13 17:47:29

|

1239人浏览过

|

来源于php中文网

原创

 

在做网吧看看的时候,由于页面中存在电影的搜索功能(用户输入)

这个功能由于不能够做成静态化,那么就只能够动态,用动态的时候会对数据库,服务器压力带来很大的考验

所以就只能用到缓存数据的方式了

数据缓存的形式包括:

1、将数据缓存到内存,相信大家这个就会想到了Memcached.memcached是高性能的分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。

2、用文件来缓存数据.将数据保存到文件中,用key=>value的形式来保存,key指文件名.这个地方必须要保证key的唯一性

设置文件的缓存时间,如果过时了就从数据库中得到数据并保存到文件中,

下面是一个文件缓存类:

1、缓存数据

2、得到数据

3、判断缓存数据是否存在

4、删除某个缓存数据

5、清除过时的缓存数据

6、清除所以的缓存数据

 

class Inc_FileCache{ 

     

    private $cacheTime = 3600;        //默认缓存时间 

    private $cacheDir = CACHE_DIR;    //缓存绝对路径 

    private $md5 = true;              //是否对键进行加密 

    private $suffix = ".php";         //设置文件后缀 

     

    public function __construct($config){ 

        if( is_array( $config ) ){ 

            foreach( $config as $key=>$val ){ 

                $this->$key = $val; 

            } 

        } 

    } 

     

    //设置缓存 

    public function set($key,$val,$leftTime=null){ 

        $key = $this->md5 ? md5($key) : $key; 

        $leftTime = $leftTime ? $leftTime : $this->cacheTime; 

        !file_exists($this->cacheDir) && mkdir($this->cacheDir,0777); 

        $file = $this->cacheDir.'/'.$key.$this->suffix; 

        $val = serialize($val); 

        @file_put_contents($file,$val) or $this->error(__line__,"文件写入失败"); 

        @chmod($file,0777)  or $this->error(__line__,"设定文件权限失败"); 

        @touch($file,time()+$leftTime) or $this->error(__line__,"更改文件时间失败"); 

    } 

     

    //得到缓存 

    public function get($key){ 

        $this->clear(); 

        if( $this->_isset($key) ){ 

            $key_md5 = $this->md5 ? md5($key) : $key; 

            $file = $this->cacheDir.'/'.$key_md5.$this->suffix; 

            $val = file_get_contents($file); 

            return unserialize($val); 

        } 

        return null; 

    } 

     

    //判断问件是否有效 

    public function _isset($key){ 

        $key = $this->md5 ? md5($key) : $key; 

        $file = $this->cacheDir.'/'.$key.$this->suffix; 

        if( file_exists($file) ){ 

            if( @filemtime($file) >= time() ){ 

                return true; 

            }else{ 

                @unlink($file); 

                return false; 

            } 

        } 

        return false; 

    } 

     

    //删除文件 

    public function _unset($key){ 

        if( $this->_isset($key) ){ 

            $key_md5 = $this->md5 ? md5($key) : $key; 

            $file = $this->cacheDir.'/'.$key_md5.$this->suffix; 

            return @unlink($file); 

        } 

        return false; 

    } 

     

    //清除过期缓存文件 

    public function clear(){ 

        $files = scandir($this->cacheDir); 

        foreach ($files as $val){ 

            if (@filemtime($this->cacheDir."/".$val)

                @unlink($this->cacheDir."/".$val); 

            } 

        } 

    } 

     

    //清除所有缓存文件 

    public function clear_all(){ 

        $files = scandir($this->cacheDir); 

        foreach ($files as $val){ 

            @unlink($this->cacheDir."/".$val); 

        } 

    } 

     

    private function error($line,$msg){ 

        die("出错文件:".__file__."/n出错行:$line/n错误信息:$msg"); 

    } 

 

在页面中的调用方法如下:

 

$cacheFile = new Inc_FileCache(array('cacheTime'=>60,'suffix'=>'.php')); 

         

//得到电影热播榜 

$where = " where pid=75"; 

$moviehotModel = $this->getM('moviehot'); 

$moviehotCount = $moviehotModel->getCount($where); 

if( !$cacheFile->_isset($where.$moviehotCount.'moviehot') ){ 

    $moviehotResult = $moviehotModel->getList(" WHERE pid=75 ",'0,10',"orderby desc"); 

    if(count($moviehotResult) > 0) { 

        $cacheFile->set($where.$moviehotCount.'moviehot',$moviehotResult); 

    } 

}else{ 

    $moviehotResult = $cacheFile->get($where.$moviehotCount.'moviehot'); 

$this->tpl['moviehotResult'] = $moviehotResult; 

 

大家如果还有什么好的文件缓存的代码可以拿来共享一下

 

摘自 ms_X0828的专栏

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/478509.htmlTechArticle在做网吧看看的时候,由于页面中存在电影的搜索功能(用户输入) 这个功能由于不能够做成静态化,那么就只能够动态,用动态的时候会对数据...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

26

2026.01.09

c++框架学习教程汇总
c++框架学习教程汇总

本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。

24

2026.01.09

学python好用的网站推荐
学python好用的网站推荐

本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。

72

2026.01.09

学python网站汇总
学python网站汇总

本专题整合了学python网站汇总,阅读专题下面的文章了解更多详细内容。

9

2026.01.09

python学习网站
python学习网站

本专题整合了python学习相关推荐汇总,阅读专题下面的文章了解更多详细内容。

10

2026.01.09

俄罗斯手机浏览器地址汇总
俄罗斯手机浏览器地址汇总

汇总俄罗斯Yandex手机浏览器官方网址入口,涵盖国际版与俄语版,适配移动端访问,一键直达搜索、地图、新闻等核心服务。

52

2026.01.09

漫蛙稳定版地址大全
漫蛙稳定版地址大全

漫蛙稳定版地址大全汇总最新可用入口,包含漫蛙manwa漫画防走失官网链接,确保用户随时畅读海量正版漫画资源,建议收藏备用,避免因域名变动无法访问。

183

2026.01.09

php学习网站大全
php学习网站大全

精选多个优质PHP入门学习网站,涵盖教程、实战与文档,适合零基础到进阶开发者,助你高效掌握PHP编程。

12

2026.01.09

php网站搭建教程大全
php网站搭建教程大全

本合集专为零基础用户打造,涵盖PHP网站搭建全流程,从环境配置到实战开发,免费、易懂、系统化,助你快速入门建站!

8

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.5万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号