ホームページ >バックエンド開発 >PHPチュートリアル >php_PHP チュートリアルのファイル キャッシュ実装プログラム コード

php_PHP チュートリアルのファイル キャッシュ実装プログラム コード

WBOY
WBOYオリジナル
2016-07-20 11:11:42809ブラウズ

ファイルキャッシュとは、phpやtxtなどのファイルをダウンロードしてアクセスした際に、指定した時間を超えた場合にファイルを生成することです。それ以外の場合は、キャッシュ ファイルが直接生成されるため、mysql データベースへのクエリが削減されます。

ファイルキャッシュの原理

1. キャッシュする必要のあるデータをシリアライズ関数を通じてシリアル化し、ファイルに直接保存します。キャッシュされたデータを使用する必要がある場合は、ファイルの内容を逆シリアル化して読み取り、必要な変数にコピーして使用します。変更頻度が低いデータはキャッシュ ファイルに書き込むことができます。


ファイルキャッシュの例

index.php

コードは以下の通りです コードをコピー

define('CACHE_ROOT','./');
include_once('./cache.func .php' );
$file = 'qzp';
$cacheFile = getCacheFileByID($file,'info/');

print_R(readCache($cacheFile));

$info = array(
'ユーザー名' => 'qzp',
'エリア名'=>'管理者',
'mp_name'=>'1234',
'gh_name'=>'5678');
writeCache($cacheFile,$info) ;

cache.func.phpファイル

関数arrayeval($array, $level = 0) {
$space = '';
for($i = 0; $i $space .= "t";
}
$evaluate = "Arrayn$space(n";
$comma = $space;
foreach($array as $key => $val) {
$key = is_string ($key ) ? ''.addcslashes($key, '').'''' : $key;
$val = !is_array($val) && (!preg_match("/^-?[1-9 ]d* $/", $val) || strlen($val) > 12) ? ''.addcslashes($val, '').'' : $val;
if(is_array($val) )) {
$evaluate .= "$comma$key => ".arrayeval($val, $level + 1); $comma = ",n$space";
}
$evaluate .= "n$space )";
return $evaluate;
}

function getCacheFileByID($id,$pre='info/',$md5= true){
if($md5){
$md5id = md5($id);
return CACHE_ROOT.'/'.$pre.substr($md5id,0,2).'/'.substr($md5id, 2,2).'/'.$id;
}else{
return CACHE_ROOT.' /'.$pre.$id;
}
}

function readCache($filename,$time=0){
if ($datas = @file_get_contents($filename)){
$datas = unserialize($datas) ;
if($time < 1 || (time() - $datas['time'] < $time)) {
return $datas['data'];
}
}
return false;
}

function writeCache($filename,$data){
makeDir(dirname($filename));
if($handle = fopen ($filename,'w+')){
$datas = array('data'=> ;$data,'time'=>time());
flock($handle,LOCK_EX);
$rs = fputs ($handle,serialize($datas));
flock($handle,LOCK_UN);
fclose($handle);
if($rs!==false){
return true;
}
}
return false;
}

function makeDir($path)
{
if (! file_exists ( $path ) ) {
makeDir ( dirname ( $path ) );
if (! mkdir ( $path, 0777 ))
die ( 'フォルダーを作成できません' . $path );
}
}



キャッシュされるファイルをシリアル化して保存し、使用時に逆シリアル化して戻します。

PHP テンプレート データをキャッシュするためのツール、smarty を使用します。 Smarty は、HTML ファイルを静的 HTML ページにキャッシュします。キャッシュする必要があるテンプレート ファイルは、smarty を使用できます。
例:

コードは次のとおりです コードをコピーします

//Smartyクラスライブラリが含まれています
require('libs/Smarty.class.php');

/ /Smarty クラス オブジェクトを作成します
$smarty = new Smarty;

//キャッシュを有効にする
$smarty->caching = true;

//キャッシュ ファイルが保存されるディレクトリを指定します
$smarty->cache_dir = "。 /cache/";

//出力も保存されます
$smarty->display('index.tpl')
?>


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/444641.html技術記事ファイルキャッシュとは、phpやtxtなどのファイルをダウンロードしてアクセスした際に、指定した時間を超えた場合にファイルを生成することを指します。 ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。