oaooaPicHome beta1
This commit is contained in:
162
core/function/function_cache.php
Normal file
162
core/function/function_cache.php
Normal file
@@ -0,0 +1,162 @@
|
||||
<?php
|
||||
|
||||
if(!defined('IN_OAOOA')) {
|
||||
exit('Access Denied');
|
||||
}
|
||||
error_reporting(E_ERROR);
|
||||
function updatecache($cachename = '') {
|
||||
|
||||
$updatelist = empty($cachename) ? array() : (is_array($cachename) ? $cachename : array($cachename));
|
||||
if(!$updatelist) {
|
||||
@include_once libfile('cache/setting', 'function');
|
||||
|
||||
build_cache_setting();
|
||||
$cachedir = DZZ_ROOT.'./core/function/cache';
|
||||
$cachedirhandle = dir($cachedir);
|
||||
while($entry = $cachedirhandle->read()) {
|
||||
|
||||
if(!in_array($entry, array('.', '..')) && preg_match("/^cache\_([\_\w]+)\.php$/", $entry, $entryr) && $entryr[1] != 'setting' && substr($entry, -4) == '.php' && is_file($cachedir.'/'.$entry)) {
|
||||
@include_once libfile('cache/'.$entryr[1], 'function');
|
||||
call_user_func('build_cache_'.$entryr[1]);
|
||||
}
|
||||
}
|
||||
|
||||
//处理应用的缓存
|
||||
foreach(C::t('app_market')->fetch_all_identifier(1) as $value) {
|
||||
if(empty($value['app_path'])) $value['app_path']='dzz';
|
||||
$appdir=$value['app_path'];
|
||||
$dir=$value['identifier'];
|
||||
$cachedir = DZZ_ROOT.'./'.$appdir.'/'.$dir.'/cache';
|
||||
if(is_dir($cachedir)) {
|
||||
$cachedirhandle = dir($cachedir);
|
||||
while($entry = $cachedirhandle->read()) {
|
||||
if(!in_array($entry, array('.', '..')) && preg_match("/^cache\_([\_\w]+)\.php$/", $entry, $entryr) && substr($entry, -4) == '.php' && is_file($cachedir.'/'.$entry)) {
|
||||
try{
|
||||
@include_once $cachedir.'/'.$entry;
|
||||
//call_user_func('build_cache_'.$dir.'_'.$entryr[1]);
|
||||
if(function_exists('build_cache_'.$appdir.'_'.$dir.'_'.$entryr[1])) call_user_func('build_cache_'.$appdir.'_'.$dir.'_'.$entryr[1]);
|
||||
elseif(function_exists('build_cache_'.$dir.'_'.$entryr[1])) call_user_func('build_cache_'.$dir.'_'.$entryr[1]);
|
||||
elseif(function_exists('build_cache_app_'.$entryr[1])) call_user_func('build_cache_app_'.$entryr[1]);;
|
||||
}catch(Exception $e){continue;}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
foreach($updatelist as $entry) {
|
||||
$entrys = explode(':', $entry);
|
||||
|
||||
if(count($entrys) == 1) {//核心缓存
|
||||
@include_once libfile('cache/'.$entry, 'function');
|
||||
call_user_func('build_cache_'.$entry);
|
||||
}elseif(count($entrys)==2){//兼容原先默认dzz目录的情况,dzz目录内的可以忽略app_path;
|
||||
try{
|
||||
@include_once DZZ_ROOT.'./dzz/'.$entrys[0].'/cache/cache_'.$entrys[1].'.php';
|
||||
if(function_exists('build_cache_'.$entrys[0].'_'.$entrys[1])) call_user_func('build_cache_'.$entrys[0].'_'.$entrys[1]);
|
||||
elseif(function_exists('build_cache_app_'.$entryr[1])) call_user_func('build_cache_app_'.$entrys[1]);
|
||||
}catch(Exception $e){continue;}
|
||||
}elseif(count($entrys)==3){
|
||||
try{
|
||||
@include_once DZZ_ROOT.'./'.$entrys[0].'/'.$entrys[1].'/cache/cache_'.$entrys[2].'.php';
|
||||
if(function_exists('build_cache_'.$entrys[1].'_'.$entrys[2])) call_user_func('build_cache_'.$entrys[1].'_'.$entrys[2]);
|
||||
elseif(function_exists('build_cache_app_'.$entryr[1])) call_user_func('build_cache_app_'.$entrys[1]);
|
||||
}catch(Exception $e){continue;}
|
||||
} else {//插件缓存
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
function writetocache($script, $cachedata, $prefix = 'cache_') {
|
||||
global $_G;
|
||||
|
||||
$dir = DZZ_ROOT.'./data/sysdata/';
|
||||
if(!is_dir($dir)) {
|
||||
dmkdir($dir, 0777);
|
||||
}
|
||||
if($fp = @fopen("$dir$prefix$script.php", 'wb')) {
|
||||
fwrite($fp, "<?php\n//Dzz! cache file, DO NOT modify me!\n//Identify: ".md5($prefix.$script.'.php'.$cachedata.$_G['config']['security']['authkey'])."\n\n$cachedata?>");
|
||||
fclose($fp);
|
||||
} else {
|
||||
exit('Can not write to cache files, please check directory ./data/ and ./data/sysdata/ .');
|
||||
}
|
||||
}
|
||||
function getcachevars($data, $type = 'VAR') {
|
||||
$evaluate = '';
|
||||
foreach($data as $key => $val) {
|
||||
if(!preg_match("/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/", $key)) {
|
||||
continue;
|
||||
}
|
||||
if(is_array($val)) {
|
||||
$evaluate .= "\$$key = ".arrayeval($val).";\n";
|
||||
} else {
|
||||
$val = addcslashes($val, '\'\\');
|
||||
$evaluate .= $type == 'VAR' ? "\$$key = '$val';\n" : "define('".strtoupper($key)."', '$val');\n";
|
||||
}
|
||||
}
|
||||
return $evaluate;
|
||||
}
|
||||
function smthumb($size, $smthumb = 50) {
|
||||
if($size[0] <= $smthumb && $size[1] <= $smthumb) {
|
||||
return array('w' => $size[0], 'h' => $size[1]);
|
||||
}
|
||||
$sm = array();
|
||||
$x_ratio = $smthumb / $size[0];
|
||||
$y_ratio = $smthumb / $size[1];
|
||||
if(($x_ratio * $size[1]) < $smthumb) {
|
||||
$sm['h'] = ceil($x_ratio * $size[1]);
|
||||
$sm['w'] = $smthumb;
|
||||
} else {
|
||||
$sm['w'] = ceil($y_ratio * $size[0]);
|
||||
$sm['h'] = $smthumb;
|
||||
}
|
||||
return $sm;
|
||||
}
|
||||
|
||||
|
||||
function arrayeval($array, $level = 0) {
|
||||
if(!is_array($array)) {
|
||||
return "'".$array."'";
|
||||
}
|
||||
if(is_array($array) && function_exists('var_export')) {
|
||||
return var_export($array, true);
|
||||
}
|
||||
|
||||
$space = '';
|
||||
for($i = 0; $i <= $level; $i++) {
|
||||
$space .= "\t";
|
||||
}
|
||||
$evaluate = "Array\n$space(\n";
|
||||
$comma = $space;
|
||||
if(is_array($array)) {
|
||||
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);
|
||||
} else {
|
||||
$evaluate .= "$comma$key => $val";
|
||||
}
|
||||
$comma = ",\n$space";
|
||||
}
|
||||
}
|
||||
$evaluate .= "\n$space)";
|
||||
return $evaluate;
|
||||
}
|
||||
function cleartemplatecache() {
|
||||
clearHooksCache();
|
||||
$tpl = dir(DZZ_ROOT.'./data/template');
|
||||
while($entry = $tpl->read()) {
|
||||
if(preg_match("/(\.tpl\.php|\.js)$/", $entry)) {
|
||||
@unlink(DZZ_ROOT.'./data/template/'.$entry);
|
||||
}
|
||||
}
|
||||
$tpl->close();
|
||||
}
|
||||
function clearHooksCache(){
|
||||
@unlink(DZZ_ROOT.'./data/cache/tags.php');
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user