php中使用文件緩存的例子

phpde 9年前發布 | 915 次閱讀 PHP

在web開發中,可以通過文件緩存,大大緩解數據庫的壓力。 如下代碼是php中使用文件緩存的例子。

CacheLayer.php

<?php
class CacheLayer{
    protected $root = "";
    protected $cache = "";
    protected $key = "";
    protected $life = 0;
    public function __construct($key, $root = "/cachelayer"){
        $this->root = $_SERVER["DOCUMENT_ROOT"].$root;
        $this->key = $key;
    }
    public function expired($life_span){
        $this->life = $life_span;
        $file = $this->root."/".$this->key.".cachelayer";
        if(is_file($file)){
            $mtime = filemtime($file);
            return (time() >= ($mtime + $this->life));
        }else{
            return true;
        }
    }
    public function put($content){
        $file = $this->root."/".$this->key.".cachelayer";
        if(!is_dir(dirname($this->root))){
            return false;
        }
        $this->delete();
        $content = json_encode($content);
        return (bool)file_put_contents($file, $content);
    }
    public function get(){
        $file = $this->root."/".$this->key.".cachelayer";
        if(is_file($file)){
            return json_decode(file_get_contents($file), true);
        }
        return array();
    }
    public function delete(){
        $file = $this->root."/".$this->key.".cachelayer";
        if(is_file($file)){
            unlink($file);
            return true;
        }
        return false;
    }
}

example.php

<?php
// Load the cachelayer and the database connection (db connection is optional)
require_once "CacheLayer.php";
require_once "db_connection.php";

// Create a instance of the cachelayer $cl_nav = new CacheLayer("navigation"); // Check to see if the cache is expired (60 10 = 10 minutes) if($cl_nav->expired(60 10)){ echo "Cache doesn't exist or is expired. Rebuilding...<br />"; // if the cache is expired rebuild it $result = mysql_query("select id, title from navigation"); $new_cache = array(); while($row = mysql_fetch_assoc($result)){ $new_cache[] = $row; } // Save the array into the cache $cl_nav->put($new_cache); } echo "Loading from cache...<br />"; // Get the cache $cache = $cl_nav->get();

// Display the cache foreach($cache as $row){ $id = $row["id"]; $title = $row["title"]; echo "<a href='/$id/$title'>$title</a><br />"; }</pre>

 本文由用戶 phpde 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!