概述
大家通过对PHP语言进一步的了解,可以知道,它是一款功能强大的嵌入式HTML脚本语言。虽然PHP的执行效率很高,速度很快,但是连接数据库、查询数据库等还是比较耗时的。
如果访问量大的话会给数据库造成很大的负担,所以对于变化不经常的内容要做好PHP数据cache(缓存)是十分必要的,我做了一个简单的PHP数据缓存类,希望对大家有所帮助。
思路是这样的:
对于一般的变量,把该变量变成PHP语言的格式,写到文件中,用时只要include这个文件就相当于加载了PHP数据缓存类了;
对于array型的变量,把array转化为PHP语言定义array的字符串,写到文件中,用时也只要include就相当于加载了cache了;
PHP数据缓存类时间上的控制,通过获取缓存文件的创建时间和现在的时间进行对比,如果没有到更新时间,直接读取缓存,如果到了更新时间,查询数据库,返回数据,再更新缓存。(尚未实现)
下面是我的PHP-kcache类(PHP_kcache_class.PHP):
注:如果是缓存字符串,请把转义字符多写一个’',即”n”要写成”\n”。
/*
//PHP-kcache class v_0.1
//Author: kangzj
//Email : kangzj@mail.bnu.edu.cn
//Blog : http://kangzj.net.ru
//作者不保证本程序没有bug,对于使用本程序
//而引起的任何问题不担负任何责任。
*/
classPHP_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="Arrayn$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;
}
}
最简单的PHP数据缓存类调用方法:
include './PHP_kcache_class.PHP';
$pc=newPHP_kcache;
$a=array('a', 'b', 'c');
$pc->set_cache('a', addslashes($a));
【责任编辑:曹凯 TEL:(010)68476606】
点赞 0
最后
以上就是害怕香水为你收集整理的php数据库缓存类,PHP数据缓存类必要性分析的全部内容,希望文章能够帮你解决php数据库缓存类,PHP数据缓存类必要性分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复