久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

PHPCMS 緩存分析

 arm_embed 2012-08-08

PHPCMS 緩存分析

在common.inc.php頁面有這樣的一行:

if(CACHE_PAGE && !defined(’IN_ADMIN’)) cache_page_start();

它根據用戶的設置選擇是否開始緩存,用戶登錄后臺后通過:網站配置=》性能優(yōu)化選項,,可選擇是否啟用PHP頁面自動緩存功能。如果用戶設置了啟用緩存且用戶不在后臺就會執(zhí)行cache_page_start()函數,cache_page_start()函數在global.func.php頁面,。與緩存相關的代碼函數如下:

PHP語言: PHPCMS2008緩存分析<?php
//php CMS所有的模塊就是如此結構, 先看是事原來有緩存,無則生成數據和cahce,然后將數據刷入模板,然后展示出來….
function cache_page_start()
{
define(‘CACHE_PAGE_ID’, md5(RELATE_URL));//定義cache文件的id,其中RELATE_URL在common.inc.php文件中定義
define(‘CACHE_PAGE_DIR’, CACHE_PAGE_PATH.substr(CACHE_PAGE_ID, 0, 2).‘/’);//頁面緩存配置(config.inc.php)
define(‘CACHE_PAGE_FILE’, CACHE_PAGE_DIR.CACHE_PAGE_ID.‘.html’);//定義Cache文件
$contents = @file_get_contents(CACHE_PAGE_FILE);//加載Cache文件
if($contents && intval(substr($contents, 15, 25)) > TIME)//判斷Cache文件是否過期,,如果沒有過期輸出
{
echo substr($contents, 29);
exit;
}
return true;
}

//生成Cache文件
function cache_page($ttl = CACHE_PAGE_TTL, $isjs = 0)
{
if($ttl == 0 || !defined(‘CACHE_PAGE_FILE’)) return false;//如果傳入的參數為0或者未定義CACHE_PAGE_FILE常量返回錯誤
$contents = ob_get_contents();//得到緩沖區(qū)的數據
if($isjs) $contents = format_js($contents);//讀入數據,格式化js
dir_create(CACHE_PAGE_DIR);//創(chuàng)建Cache目錄
$contents = “<!–expiretime:”.(TIME + $ttl).“–>\n“.$contents;//設置文件最后的修改時間,以防同樣的訪問,再次生成cahce
file_put_contents(CACHE_PAGE_FILE, $contents); //將cache文件內容寫入cahce_file_name文件中
@chmod(CACHE_PAGE_FILE, 0777);//設置cahe目錄的可讀性,
}

function cache_page_clear()
{
@set_time_limit(600);//設置頁面最大執(zhí)行時間
$dirs = glob(CACHE_PAGE_PATH.‘*’);//查找與模式匹配的文件
foreach($dirs as $dir)
{
$files = glob($dir.‘/*’);//查找文件夾下所有文件
foreach($files as $file)
{
@unlink($file);//遍歷刪除文件
}
@rmdir($dir);//遍歷刪除文件夾
}
}

function cache_count($sql)//統計cache的更新時間和并寫到數據庫,,比如更新時間,,更新了多少次
{
global $db, $TEMP;
$id = md5($sql);
if(!isset($TEMP['count'][$id]))
{
if(CACHE_COUNT_TTL)
{
$r = $db->get_one(“SELECT `count`,`updatetime` FROM `”.DB_PRE.“cache_count` WHERE `id`=’$id‘”);
if(!$r || $r['updatetime'] < TIME - CACHE_COUNT_TTL)
{
$r = $db->get_one($sql);
$TEMP['count'][$id] = $r['count'];
$db->query(“REPLACE INTO `”.DB_PRE.“cache_count`(`id`, `count`, `updatetime`) VALUES(’$id‘, ‘”.$r['count'].“‘, ‘”.TIME.“‘)”);
}
}
else
{
$r = $db->get_one($sql);
}
$TEMP['count'][$id] = $r['count'];
}
return $TEMP['count'][$id];
}

//用戶信息的cache文件
function cache_member()
{
global $db;
$status = $db->table_status(DB_PRE.‘member_cache’);
if($status['Rows'] == 0)
{
@set_time_limit(600);
$db->query(“INSERT INTO `”.DB_PRE.“member_cache` SELECT * FROM `”.DB_PRE.“member`”);
return true;
}
return false;
}

function cache_read($file, $path = ”, $iscachevar = 0)
{
if(!$path) $path = CACHE_PATH;
$cachefile = $path.$file;
if($iscachevar)//判斷是否cache變量
{
global $TEMP;//temp是全局性的臨時變量,記錄一些用戶信息及配置信息,在commom.ini.php中有定義
$key = ‘cache_’.substr($file, 0, -4);//去掉文件的后四位作為key,,這個后四位暫時我也不明白,,等后面分析
return isset($TEMP[$key]) ? $TEMP[$key] : $TEMP[$key] = @include $cachefile;
}
return @include $cachefile;
}

//寫入Cache文件
function cache_write($file, $array, $path = ”)
{
if(!is_array($array)) return false;
$array = “<?php\nreturn “.var_export($array, true).“;\n?>”;
$cachefile = ($path ? $path : CACHE_PATH).$file;
$strlen = file_put_contents($cachefile, $array);
@chmod($cachefile, 0777);
return $strlen;
}

//刪除Cache文件
function cache_delete($file, $path = ”)
{
$cachefile = ($path ? $path : CACHE_PATH).$file;
return @unlink($cachefile);
}

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現有害或侵權內容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多