php cache类代码(php数据缓存类)
前端之家收集整理的这篇文章主要介绍了
php cache类代码(php数据缓存类),
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果访问量大的话会给数据库造成很大的负担,所以对于变化不经常的内容要做好PHP 数据cache(缓存)是十分必要的,我做了一个简单的PHP“文件缓存”的类,希望对大家有所帮助。
思路是这样的:
对于一般的变量,把该变量变成
PHP语言的格式,写到
文件中,用时只要include这个
文件就相当于加载了cache了;
对于array型的变量,把array转化为
PHP语言定义array的字符串,写到
文件中,用时也只要include就相当于加载了cache了;
缓存cache时间上的控制,通过
获取缓存
文件的创建时间和现在的时间进行对比,如果没有到更新时间,直接读取缓存,如果到了更新时间,
查询数据库,返回数据,再更新缓存。(尚未实现)
下面是我的PHP-kcache类(PHP_kcache_class.PHP):
注:如果是缓存字符串,请把转义字符多写一个'\',即”\n”要写成”\n”。 <div class="codetitle">
<a style="CURSOR: pointer" data="30834" class="copybut" id="copybut30834" onclick="doCopy('code30834')"> 代码如下: <div class="codebody" id="code30834">
/
//PHP-kcache class v_0.1
//Author: kangzj
//Email : kangzj@mail.bnu.edu.cn
//Blog : http://kangzj.net.ru
//作者不保证本程序没有bug,对于使用本程序
//而引起的任何问题不担负任何责任。
/
class
PHP_kcache {
//相对或者绝对目录,末尾不要加 '/'
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;
}
}