ホームページ  >  記事  >  バックエンド開発  >  優れた php ファイル キャッシュ クラス file_PHP チュートリアル

優れた php ファイル キャッシュ クラス file_PHP チュートリアル

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

あらゆる面から見て、このキャッシュ クラスは非常に合理的であり、必要とする友人が参照できるよう、優れた PHP ファイル キャッシュ クラス ファイルをお勧めします。

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

class Cache {
/**キャッシュディレクトリ **/
var $CacheDir = './c';
/** キャッシュされたファイル ** /
var $CacheFile = '';
/**ファイルキャッシュ時間 (分) **/
var $CacheTime = 0;
/**ファイルがキャッシュされているかどうか **/
var $CacheFound = False;
/**エラーとデバッグ情報 **/
var $DebugMsg = NULL;

function Cache($CacheTime = 0) {
$this->CacheTime = $CacheTime;
}

private function Run() {
/**キャッシュ時間が0より大きい場合は、キャッシュされたファイルの変更時間をキャッシュ時間内で検出し、それが0以下の場合はFalseとなります。 false を返し、キャッシュされたファイルを削除します
*/
Return $this->CacheTime ? $this->CheckCacheFile() : $this->CleanCacheFile();
}
function GetCache($VistUrl,$CacheFileType = 'html')
{
$this ->SetCacheFile ($VistUrl,$CacheFileType);

$fileName=$this->CheckCacheFile();

if($fileName)
{
$fp = fopen($fileName,"r");
$ content_= fread( $fp, filesize($fileName));
fclose($fp);
return $content_;
}
else
{
return false;
}
}
プライベート関数 SetCacheFile($VistUrl,$CacheFileType = 'html' ) {
if(empty($VistUrl)) {
/**デフォルトはindex.html **/
$this->CacheFile = 'index';
}else {
/**渡されたパラメータが $_POST * の場合*/
$this->CacheFile = is_array($VistUrl) ? implode('.',$VistUrl) : $VistUrl;
}
$this->CacheFile = $this->CacheDir.'/'.md5( $this->gt;CacheFile);
$this->CacheFile.= '.'.$CacheFileType;
}

function SetCacheTime($t = 60) {

$this->CacheTime = $t;
}

プライベート関数 CheckCacheFile() {

if(!$this->CacheTime || !file_exists($this->CacheFile)) {Return False;}
/**ファイルの作成/変更日と現在の日付との時間差を比較します **/
$GetTime=( Time()- Filemtime($this->CacheFile))/(60*1);
/**Filemtime 関数にはキャッシュがあります。キャッシュの消去に注意してください **/
Clearstatcache();
$this->Debug('制限時間 '.($ GetTime*60) .'/'.($this->CacheTime*60).'');
$this->CacheFound = $GetTime CacheTime ? : False;
$this->CacheFound を返す;
}

関数 SaveToCacheFile($VistUrl,$Content,$CacheFileType = 'html') {
$this->SetCacheFile($VistUrl,$CacheFileType);
if(!$this->CacheTime) {
Return False;
}
/**キャッシュディレクトリが存在するか確認する **/
if(true === $this->CheckCacheDir()) {
$CacheFile = $this->CacheFile;
$CacheFile = str_replace('//',' /',$CacheFile);
$fp = @fopen($CacheFile,"wb");
if(!$fp) {
$this->Debug('ファイル '.$CacheFile.' を開く失敗') ;
}else {
if(@!fwrite($fp,$Content)){
$this->Debug('Write '.$CacheFile.' Fail');
}else {
$this-> Debug('キャッシュされたファイル');
};
@fclose($fp);
}
}else {
/**キャッシュディレクトリが存在しないか、ディレクトリを作成できません **/
$this->Debug('キャッシュフォルダー'.$this- >CacheDir.' 見つかりません');
}
}

プライベート関数 CheckCacheDir() {
if(file_exists($this->CacheDir)) { Return true; }
/**現在の作業ディレクトリを保存 **/
$Location = getcwd();
/**パスを個別のディレクトリに分割します **/
$Dir = split("/", $this->CacheDir);
/**ディレクトリを作成するループ **/
$CatchErr = True;
for ($i=0; $i if (!file_exists($Dir[$i])){
/** ディレクトリの作成に失敗した場合は False が返され、最後に作成されたディレクトリ * の戻り値が返されます。*/
$CatchErr = @mkdir($Dir[$i],0777);
}
@chdir($Dir[$i]);
}
/**作成完了後、元のディレクトリに移動します ※*/
chdir( $Location);
if(!$CatchErr) {
$this->Debug('Create Folder '.$this->CacheDir.' Fail');
}
Return $CatchErr;
}

プライベート関数CleanCacheFile() {
if(file_exists($this->CacheFile)) {
@chmod($this->CacheFile,777);
@unlink($this->CacheFile);
}
/** キャッシュファイルを設定しない **/
$this->CacheFound = False;
Return $this->CacheFound;
}

function Debug($msg='') {
if(DEBUG) {
$this-> DebugMsg[] = '[キャッシュ]'.$msg;
}
}

function GetError() {
Return empty($this->DebugMsg) ? '' : "
n".implode("
n",$this->DebugMsg);
}
}/* 授業終了 */


?>


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/444619.html技術記事本人は、安全な php ファイル保存形式のファイルを推奨していますが、この保存形式はさまざまな面から見て妥当であり、大規模なウェブサイトの使用に適していると考えられます。必要な友人の参考になれば幸いです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。