jiekay
2015-01-28 20:10:17
php仿照asp实现application缓存的代码分享
php 怎么没有asp 那样的application缓存呢?最近我找了很多,都只有自己写,下面我分享一段代码哦
class php_cache{
//相对或者绝对目录,末尾不要加 '/'
var $cache_dir = './cache';
var $cache_extension = '.cache.php';
function set_cache($name, $value){
$pre = "< ?\n//Cache Created at: ".date('Y-m-d H:i:s')."\n";
if(!is_array($value)){
$value = $value;
$str = "\$$name = '$value';";
}else{
$str = "\$$name = " . $this->arrayeval($value) . ';';
}
$end = "\n?>";
echo $cache = $pre . $str . $end;
$cache_file = $this->cache_dir . '/' . $name . $this->cache_extension;
if($fp = @fopen($cache_file, 'wb')) {
fwrite($fp, $cache);
fclose($fp);
return true;
} else {
echo $cache_file;
exit('Can not write to cache files, please check cache directory ');
return false;
}
}
//将array变成字符串, 来自discuz!
function arrayeval($array, $level = 0) {
if(!is_array($array)) {
return "'".$array."'";
}
$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;
}
}
调用代码如下:
include './phpcache_class.php';
$pc = new php_cache;
$a = array('a', 'b', 'c');
$pc->set_cache('a', addslashes($a));
猜你喜欢
请下载代码后再发表评论
相关代码
最近下载
最近浏览
somexi
2024年8月23日
暂无贡献等级
xuthus LV1
2023年6月13日
秋月常 LV1
2023年4月11日
a197304a
2023年1月8日
暂无贡献等级
xzpqza LV2
2022年11月9日
cgfeng12345 LV10
2022年10月24日
Shaw_sm LV1
2022年6月1日
2953048281 LV2
2022年4月13日
xiaoming788955
2022年4月11日
暂无贡献等级
zzz957 LV2
2022年4月6日



