PHP開発APPインタフェース学習ノートとまとめ-静的キャッシュ
14356 ワード
静的キャッシュを格納すると、キャッシュがファイルに書き込まれます.
file.php
testfile.php
======
少し変更して、n分のキャッシュを設定し、n分を超えるとキャッシュを再生成し、そうでないとキャッシュからデータを読み出します.
ファイルにphpでは、データを格納する際にファイル名とファイル修正時間を同時にキャッシュデータに格納する
testfile.php
file.php
<?php
class Cache{
//
const EXT = 'txt';
//
private $_dir;
public function __construct(){
$this->_dir = dirname(__FILE__).'/files/';
}
public function cacheData($k,$v = '',$path = ''){
//
$filename = $this->_dir.$path.$k.'.'.self::EXT;
//$v ‘’:
if($v !== ''){
//
if(is_null($v)){
return @unlink($filename);
}
//
$dir = dirname($filename);
if(!is_dir($dir)){
mkdir($dir,0777);
}
// $v string
return file_put_contents($filename,json_encode($v));
}
//
if(!is_file($filename)){
return false;
}else{
return json_decode(file_get_contents($filename),true);
}
}
}
testfile.php
<?php
require 'file.php';
$data = array(
'id'=>1,
'name'=>'Mary',
'type'=>array(1,3,6)
);
$file_cache = new Cache();
//
if($file_cache->cacheData('index_cache',$data)){
echo 'success';
}else{
echo 'error';
}
//
if($con = $file_cache->cacheData('index_cache')){
var_dump($con);
}else{
echo 'error';
}
//
if($con = $file_cache->cacheData('index_cache',null)){
echo 'delete success';
}else{
echo 'error';
}
======
少し変更して、n分のキャッシュを設定し、n分を超えるとキャッシュを再生成し、そうでないとキャッシュからデータを読み出します.
ファイルにphpでは、データを格納する際にファイル名とファイル修正時間を同時にキャッシュデータに格納する
<?php
class Cache{
//
const EXT = 'txt';
//
private $_dir;
public function __construct(){
$this->_dir = dirname(__FILE__).'/files/';
}
public function cacheData($k,$v = '',$path = ''){
//
$filename = $this->_dir.$path.$k.'.'.self::EXT;
//$v ‘’:
if($v !== ''){
//
if(is_null($v)){
return @unlink($filename);
}
//
$dir = dirname($filename);
if(!is_dir($dir)){
mkdir($dir,0777);
}
// $v string
$_return = array(
'filename' => $filename,
'filetime' => @filemtime($filename), // ( )
'con' => json_encode($v)
);
return file_put_contents($filename,json_encode($_return));
}
//
if(!is_file($filename)){
return false;
}else{
return json_decode(file_get_contents($filename),true);
}
}
}
testfile.php
<?php
require 'file.php';
$data = array(
'id'=>1,
'name'=>'Mary',
'type'=>array(1,3,6)
);
$file_cache = new Cache();
// 5min , 30s ,
$k = 'index_cache';
$countdown = 5*60;
$con = $file_cache->cacheData($k);
if($con){ //
if(time()-$con['filetime'] > 30){
$file_cache->cacheData($k,$data);
var_dump($data);
}else{
$res = $file_cache->cacheData($k);
if($res){
var_dump(json_decode($res['con'],true));
}
}
}else{ //
$file_cache->cacheData($k,$data);
var_dump($data);
}