PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP高级编程 >> 开发技巧 >> 

php的缓存类

php的缓存类

来源:互联网  作者:未知  发布时间:2008-01-13
php的缓存类 以下为引用的内容: ? php /* *FileName:
 php的缓存类

以下为引用的内容:
<?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
*     Description                     :     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($tmp0777
);

                 }
                 
$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
);     
             }
     }
}
?>
Tags: function   return   php     缓存  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号