phpcache类代码(php数据缓存类)
2023-06-13 09:14:18 时间
如果访问量大的话会给数据库造成很大的负担,所以对于变化不经常的内容要做好php数据cache(缓存)是十分必要的,我做了一个简单的php“文件缓存”的类,希望对大家有所帮助。
思路是这样的:
对于一般的变量,把该变量变成php语言的格式,写到文件中,用时只要include这个文件就相当于加载了cache了;
对于array型的变量,把array转化为php语言定义array的字符串,写到文件中,用时也只要include就相当于加载了cache了;
缓存cache时间上的控制,通过获取缓存文件的创建时间和现在的时间进行对比,如果没有到更新时间,直接读取缓存,如果到了更新时间,查询数据库,返回数据,再更新缓存。(尚未实现)
下面是我的php-kcache类(php_kcache_class.php):
注:如果是缓存字符串,请把转义字符多写一个"\",即”\n”要写成”\\n”。
复制代码代码如下:
思路是这样的:
对于一般的变量,把该变量变成php语言的格式,写到文件中,用时只要include这个文件就相当于加载了cache了;
对于array型的变量,把array转化为php语言定义array的字符串,写到文件中,用时也只要include就相当于加载了cache了;
缓存cache时间上的控制,通过获取缓存文件的创建时间和现在的时间进行对比,如果没有到更新时间,直接读取缓存,如果到了更新时间,查询数据库,返回数据,再更新缓存。(尚未实现)
下面是我的php-kcache类(php_kcache_class.php):
/*
//php-kcacheclassv_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";
functionset_cache($name,$value){
$pre="<?\n//CacheCreatedat:".date("Y-m-dH: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);
returntrue;
}else{
echo$cache_file;
exit("Cannotwritetocachefiles,pleasecheckcachedirectory");
returnfalse;
}
}
//将array变成字符串,来自discuz!
functionarrayeval($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($arrayas$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"./php_kcache_class.php";
$pc=newphp_kcache;
$a=array("a","b","c");
$pc->set_cache("a",addslashes($a));
复杂的调用方法(加上缓存时间控制的)——稍后补上….tobecontinued…
相关文章
- php getrealpath,PHP SplFileInfo getRealPath()用法及代码示例「建议收藏」
- 【笔记php】如何使用PHP从JSON提取数据?
- PHP缓存类详解编程语言
- 学习MySQL还是PHP?(先学php还是mysql)
- PHP和MySQL:构建动态网站的利器(php与mysql)
- 交互PHP与MySQL联动:实现数据交互(php与mysql数据库)
- PHP实现Linux脚本之旅(php调用linux脚本)
- PHP扩展开发:实现Redis读写数据(php扩展redis)
- MySQL and PHP: Establishing the Perfect Connection(mysql链接php)
- 数据PHP操作MySQL:删除数据(php删除mysql)
- Linux系统下PHP安装Redis扩展的步骤(php安装redis)
- 使用PHP和MySQL精心构建表单(php表单mysql)
- PHP结合Redis实现极速缓存优化(phpredis工具)
- PHP应该在哪个Linux操作系统上运行?(php用什么linux)
- PHP与MySQL的完美搭配,打造高效列表展示(php与mysql列表)
- PHP轻松访问MySQL数据:使用简明易懂的方法获取数据(php获取mysql数据)
- 使用 PHP 查询 MySQL 数据库的方法详解(php查询mysql数据)
- Redis PHP客户端:高效处理数据缓存(redisphp客户端)
- Linux系统如何实现PHP开机自启动?(linux开机启动php)
- php建立你的网站:使用 Apache、MySQL 和 PHP(httpdmysql)
- 使用PHP实现Redis快速构建应用(redis实例php)
- 使用PHP在Linux系统中运行命令(php运行linux命令)
- PHP操作MySQL:删除字段(php删除mysql字段)
- PHP读取MSSQL数据库:实现简单快捷的网页查询(php读取mssql网页)
- PHP连接MS SQL服务器添加数据(php 添加mssql)
- PHP连接MSSQL:让你更快更好地实现数据互通(php接mssql)
- PHP连接MSSQL 64位数据库的实现(php mssql 64)
- PHP应用Redis缓存带来的变化(redis缓存在php)
- 中的应用使用Redis,提升PHP程序效率(redis缓存在php)
- php缓存函数代码
- 基于php缓存的详解