簡易快取物件

<?php
/*
這是一個簡易的快取物件cache
作者:二林網管 村仔
2009.09.07
2014.07.10 fix
公共GPL版權

用法:
$Cache=new myCache();
$Cache->dir='/home/edu/html';//可以寫入的資料夾
$Cache->type='text';//text或array,預設為陣列,非陣列才寫
$Cache->save('名稱',$data);//儲存快取
$data=$Cache->get('名稱');//取快取資料


*/

class myCache{
    private $ext='.cache';//附檔名
    var $dir;//快取檔案路徑
    public $limit=300;//5分*60秒 多少時間內的線上人數,可由外部指定
    public $type='array';//或text
//建構函式,起始
public function __construct() {

}
//存入快取
public function save($id,$data) {
    $fn=$this->dir.$id.$this->ext;
    //先判斷檔案存在否
    if (file_exists($fn)) {$this->del($id);}//存在時如何處理
    if ($this->makeFile($fn)){
    if ($this->type=='array'){$str=serialize($data);}else{$str=$data;}
    $fp=fopen($fn,"w");
    fwrite ($fp,$str);
    fclose($fp);
    }


}

//取出快取
public function get($id) {
    $fn=$this->dir.$id.$this->ext;
    //先判斷檔案存在否
    if (!file_exists($fn)) {return false;}//存在時如何處理
    $str = @file_get_contents($fn);
    if (!empty($str)){
    if ($this->type=='array'){$data=unserialize($str);}else{$data=$str;}
    //$data=unserialize($str);
    return $data;
    }
}


//刪除快取
public  function del($id) {
    $fn=$this->dir.$id.$this->ext;
    if (file_exists($fn)) unlink($fn);//存在時如何處理
    }

public  function makeFile($file) {
    $fp=fopen($file,"a");
    if ($fp){fclose($fp);return true;}
    else {return false;}
    }

}
//end class

標籤: PHP
評論: 0 | 引用: 0 | 閱讀: 2529