程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php文件緩存實例代碼

php文件緩存實例代碼

編輯:關於PHP編程

php教程文件緩存實例代碼
緩存在實際使用當中應用很廣泛,可以減輕對服務器數據庫教程的訪問,提高運行速度。目前很多cms內容管理系統中頻繁使用緩存機制來提高系統運行的效率
cache.php 代碼如下:
php代碼
<? 
/*
用戶需要事先定義的常量:
_cachepath_        模板緩存路徑
_cacheenable_        自動緩存機制是否開啟,未定義或為空,表示關閉自動緩存機制
_recachetime_        自動重新緩存間隔時間,單位為秒,未定義或為空,表示關閉自動重新緩存
*/ 
 
class cache { 
 
var $cachefile; 
var $cachefilevar; 
 
function cache() { 
        //生成當前頁的cache組文件名 $this->cachefilevar 及文件名 $this->cachefile 
        //動態頁的參數不同對應的cache文件也不同,但是每一個動態頁的所有cache文件都有相同的文件名,只是擴展名不同 
        $s=array(".","/");$r=array("_",""); 
        $this->cachefilevar=str_replace($s,$r,$_server["script_name"])."_".$_get[_actionvar_]; 
        $this->cachefile=$this->cachefilevar.".".md5($_server["request_uri"]); 

 
//刪除當前頁/模塊的緩存 
function delete() { 
        //刪除當前頁的緩存 
        $d = dir(_cachepath_); 
        $strlen=strlen($this->cachefilevar); 
        //返回當前頁的所有cache文件組 
        while (false !== ($entry = $d->read())) { 
                    if (substr($entry,0,$strlen)==$this->cachefilevar) { 
                            if (!unlink(_cachepath_."/".$entry)) {echo "cache目錄無法寫入";exit;} 
                    } 
            } 

 
//判斷是否已cache過,以及是否需要cache 
function check() { 
        //如果設置了緩存更新間隔時間 _recachetime_ 
        if (_recachetime_+0>0)        { 
                //返回當前頁cache的最後更新時間 
                $var=@file(_cachepath_."/".$this->cachefilevar);$var=$var[0]; 
                //如果更新時間超出更新間隔時間則刪除cache文件 
                if (time()-$var>_recachetime_) { 
                        $this->delete();$ischage=true; 
                } 
        } 
        //返回當前頁的cache 
        $file=_cachepath_."/".$this->cachefile; 
        //判斷當前頁cache是否存在 且 cache功能是否開啟 
        return (file_exists($file) and _cacheenable_ and !$ischange); 

 
//讀取cache 
function read() { 
        //返回當前頁的cache 
        $file=_cachepath_."/".$this->cachefile; 
        //讀取cache文件的內容 
        if (_cacheenable_) return readfile($file); 
        else return false; 

 
//生成cache 
function write($output) { 
        //返回當前頁的cache 
        $file=_cachepath_."/".$this->cachefile; 
        //如果cache功能開啟 
        if (_cacheenable_) { 
                //把輸出的內容寫入cache文件 
                fopen($file,'w'">$fp=@fopen($file,'w'); 
                if (!@fputs($fp,$output)) {echo "模板cache寫入失敗";exit;} 
                @fclose($fp); 
                //如果設置了緩存更新間隔時間 _recachetime_ 
                if (_recachetime_+0>0) { 
                        //更新當前頁cache的最後更新時間 
                        $file=_cachepath_."/".$this->cachefilevar; 
                        $fp=@fopen($file,'w'); 
                        if (!@fwrite($fp,time())) {echo "cache目錄無法寫入";exit;} 
                        @fclose($fp); 
                } 
        } 

 

?> 
使用過程:
php代碼
<?php 
        define("_cachepath_","./cache/"); 
        define("_cacheenable_","1"); 
        define("_recachetime_","43200"); 
        include('cache.php'); 
        $cache=new cache(); 
        if ($cache->check()) { 
        $template=$cache->read(); 
                }else { 
                ob_start(); 
                ob_implicit_flush(0); 
        ?> 
                                  頁面內容。。。。 
<?php 
        $template = ob_get_contents(); 
        $cache->write($template); 
        } 
        ?> 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved