1. 程式人生 > >PHP自定義快取

PHP自定義快取

<?php class File { private $_dir;//定義快取檔案目錄 const EXT = '.txt';//定義字尾名 public function __construct() { $this->_dir = dirname(__FILE__) . '/files/';//設定快取檔案目錄 } /* $key 快取檔名,包含目錄 $value 快取檔案內容,當輸入為null時刪除快取,可為字串或陣列 $cacheTime 設定快取時間,單位為秒 */
public function cacheData($key, $value = '', $cacheTime = 0) { $filename = $this->_dir . $key . self::EXT; if($value !== '') { // 如果沒有改快取時,將value值寫入快取 if(is_null($value)) { return @unlink($filename); } $dir = dirname($filename
); if(!is_dir($dir)) { mkdir($dir, 0777); } $cacheTime = sprintf('%011d', $cacheTime);//設定該快取時的時間,並拼接到資料中 return file_put_contents($filename,$cacheTime . json_encode($value)); } if(!is_file($filename)) { return
FALSE; } $contents = file_get_contents($filename);//有該快取時讀取快取 $cacheTime = (int)substr($contents, 0 ,11); $value = substr($contents, 11); if($cacheTime !=0 && ($cacheTime + filemtime($filename) < time())) {//filemtime()該檔案上次修改內容 unlink($filename);//超過該快取時間後刪除該快取 return FALSE; } return json_decode($value, true); } } $file = new File(); echo $file->cacheData('test1');