php的缓存类

昨天在phpx.com找到的,真是爽极了.
感谢dxf218

我修正了其中一点点小小小的问题
<?php
/*
*    FileName                :    cache.inc.php
*    Link                    :   [url]http://blog.csdn.net/dxflingxing/[/url]
*    Author                    :   dxflingxing
*    Date                    :    2006-5-9
*    Last Modified            :    2006-5-16
*    Version                    :    1.0.1
*    Descrīption                :    Cache a page in file formart
*    Notice                    :    Make sure you cache file dir can be readed and wrote
*
*    Thanks to                :    小邪,barryonline(寒)
************************************************************
*
*    Usage                    :
*        # Cache active time half an hour
*        # This Can Auotmatic make some none exist dirs
*        # Or you can use an cache file in curent dir
*        # The Usage Such as
*        # $cache    = new cache(string cache_name,int seconds);
*
*        require ('cache.inc.php');
*        $cache    = new cache('dir1/dir2/cache_name.htm',60*30);   
*
*        $cache->start();
*
*        # Your Page Contents With print
*        phpinfo();
*
*        $cache->_end();
*
*/
 
class cache {
    var $_file;
    var $cache_time;
 
    function cache($_file='_index.htm',$cache_time=1) {
        $this->_file        = $_file;
        $this->cache_time    = $cache_time;
    }
 
    /*
    * Start cache method without Return
    */
    function start() {
      
        if($this->cache_is_active()) {
            include($this->_file);
            exit;
            }
          ob_start();
    }
 
    /*
    * End of cache method without Return
    */
    function _end() {
        $this->make_cache();
        ob_end_flush();
    }
 
    /*
    * Check if cache file is actived
    * Return true/false
    */
    function cache_is_active() {
        if ($this->cache_is_exist()) {
            if (time() - $this->lastModified() < $this->cache_time)
                Return true;
            else {
                Return false;
            }
        }
        else {
            Return false;
        }
    }
 
    /*
    * Create cache file
    * Return true/false
    */
    function make_cache() {
        $content    = $this->get_cache_content();
        if($this->write_file($content)) {
            Return true;
        }
        else {
            Return false;
        }
    }
 
    /*
    * Check if cache file is exists
    * Return true/false
    */
    function cache_is_exist() {
        if(file_exists($this->_file)) {
            Return true;
        }
        else {
            Return false;
        }
    }
 
    /*
    * Return last Modified time in bollin formart
    * Usage: $lastmodified = $this->lastModified();
    */
    function lastModified() {
        Return @filemtime($this->_file);
    }
 
    /*
    * Return Content of Page
    * Usage: $content = $this->get_cache_content();
    */
    function get_cache_content() {
        $contents = ob_get_contents();
//        Return '<!--'.date('Y-m-d H:i:s').'-->'.$contents;
        Return $contents;
    }
 
    /*Write content to $this->_file
    * Return true/false
    * Usage: $this->write_file($content);
    **/
    function write_file($content,$mode='w+')
    {
        $this->mk_dir($this->_file);
        if (!$fp = @fopen($this->_file,$mode)) {
            $this->report_Error($this->_file." 目录或者文件属性无法写入.");
            Return false;
        } else{
            @fwrite($fp,$content);
            @fclose($fp);
            @umask($oldmask);
            Return true;
        }
    }
 
    /*
    * Make given dir included in $this->_file
    * Without Return
    * Usage: $this->mk_dir();
    */
    function mk_dir()
    {    //$this->_file    = str_replace('','/');
        $dir    = @explode("/", $this->_file);
        $num    = @count($dir)-1;
        $tmp    = './';
        for($i=0; $i<$num; $i++){
            $tmp    .= $dir[$i];
            if(!file_exists($tmp)){
                @mkdir($tmp);
                @chmod($tmp, 0777);
            }
            $tmp    .= '/';
        }
    }
 
    /*
    * Unlink an exists cache
    * Return true/false
    * Usage: $this->clear_cache();
    */
    function clear_cache() {
        if (!@unlink($this->_file)) {
            $this->report_Error('Unable to remove cache');
            Return false;
        }
        else {
            Return true;
        }
    }
 
    /*
    * Report Error Messages
    * Usage: $this->report_Error($message);
    */
    function report_Error($message=NULL) {
        if($message!=NULL) {
            trigger_error($message);   
        }
    }
}
?>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值