ホームページ >バックエンド開発 >PHPチュートリアル >PHP変数をファイル形式でキャッシュする方法

PHP変数をファイル形式でキャッシュする方法

WBOY
WBOYオリジナル
2016-06-23 13:31:58943ブラウズ

この記事の例では、PHP 変数をファイルの形式でキャッシュする方法について説明します。皆さんの参考に共有してください。具体的な実装方法は以下の通りです。

[php] view plaincopy

/*

$cache_set = array(

//キャッシュパス、最後に「/」を追加

'cache Root '=>'./cache/',

//キャッシュ時間

'cacheTime'=>20,

//キャッシュタイプ

'cacheType'=>1,

//拡張子

'cacheExe'=>'.php'

);

$cache = new Cache($cache_set);

$ a="aaa ";

if($cache->cache_is("d")){

$c=$cache->cache_read("d"); echo "c" ;

print_r($c);

}else {

$b=$cache->cache_data('d',$a);

print_r($b);

//$cache->clear("a");

//echo $cache->cache_read("./cache/d.php");

//echo $d;

/* *

* データ キャッシュ クラス v1.0

* @author shake

* 2009-11-13 16:02:26

* ページではなく変数などのデータをキャッシュするために使用されます

*/

class Cache{

//構成

public $config = array(

//キャッシュパス

'cacheRoot'=>'./cache/',

//キャッシュ時間

'cacheTime'=>1,

// キャッシュタイプ 1 シリアル化データ 2 変数

'cacheType'=>2,

// 拡張機能名

'cacheExe'=> '.php '

//中間変数を変換

);

function __construct($cache_set = array())

if(!empty($cache_ set) )) $this ->config=array_merge($this->config,$cache_set);

$this->config['ClassName'] = __CLASS__ }

public function clear($filename=) ''){

if (file_exists($this->cache_file($filename))) {

@unlink($this->cache_file($filename))

}elseif (empty($filename); ){

$this->clear_dir($this->config['cacheRoot']);

}else{

$this->clear_dir($this->config['cacheRoot'])。 $filename);

echo $this->config['cacheRoot'].$filename;

}

}

// パスを削除するためのループ

private function clear_dir($dir,$to = false)

{

if ($list = glob($dir.'/*'))

{

foreach ($list as $file)

{

is_dir($this->) clear_dir($file) : unlink($file);

}

}

if ($to === false) rmdir($dir) }

// 書き込みキャッシュ

プライベート関数cache_write ( $filename, $ writetext, $openmod='w'){

if (!file_exists($filename)) {

@$this->makeDir( dirname($filename));

if( @$fp = fopen($filename, $openmod)) {

flock($fp, $writetext);

fclose($fp); } else {

echo "ファイル: $filename 書き込みエラー。";

return false }

}

//キャッシュの有効期間有効 return true

public function queue_is($fileName){

$fileName=$this->cache_file($fileName);

if( file_exists( $fileName ) ) {

// if キャッシュ時間が負の数の場合、有効期限は切れません。 if ($this->config['cacheTime'] == 0) {

return false }

// の作成時間を取得します。キャッシュ ファイル

$ctime = intval(filemtime($fileName));

// キャッシュ時間より大きいかどうかを比較し、大きい場合は期限切れになり、そうでない場合は期限切れになりません

if (time( ) - $ctime > $this->config['cacheTime']) {

return false;

}else {

return true

}

// ファイルは存在しないため、期限切れとみなされます。

}else {

return false;

}

}

public function queue_data($name,$data){

$varname=$name

$name = $this->cache_file($) name);

//config['cacheTime']==0、つまり、データはキャッシュせずに直接返されます

if ($ this->config['cacheTime'] <> 0) {

if($this->config['cacheType']==1){

$write_data = "".serialize($data);

($data,true) ;

$write_data .=";\r\n?>

}

$this->cache_write($name,$write_data)

}

$ データを返します。

//キャッシュファイル名

プライベート関数cache_file($filename){

return $this->config['cacheRoot'].$filename.$this->config['cacheExe' ;

return '' ;

}

if($this->config['cacheType']==1){

if (function_exists('file_get_contents')){

$cache_Content=file _get_contents($file ; ,filesize( $file)) ;

if (strlen($data)===0)

$cache_Content .= $data;

fclose($fopen);

$cache_Content = substr($cache_Content,13);/* Remove */

$cache_Content = unserialize($cache_Content);

return $cache_Content }else{

include_once; ($ファイル);

$var を返す;  

}

}

//循環环创建目录

private function makeDir( $dir, $mode = 0777 ) {

if( ! $dir ) return 0;  

$dir = str_replace( "\\", "/", $dir );  

$mdir = 「」;  

foreach( explode( "/", $dir ) as $val ) {

$mdir .= $val."/";  

if( $val == ".." || $val == "." || trim( $val ) == "" ) 続行;  

if( ! file_exists( $mdir ) ) {

if(!@mkdir( $mdir, $mode )){

return false;  

}

}

}

trueを返します。  

}

}

?>  


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。