PHP数据缓存类对于一个不经常变化内容的数据库来说是非常必要的,可以帮助我们减轻大量的负担。下面就来一起看看具体使用方法。

大家通过对PHP语言进一步的了解,可以知道,它是一款功能强大的嵌入式HTML脚本语言。虽然PHP的执行效率很高,速度很快,但是连接数据库、查询数据库等还是比较耗时的。#t#

PHP数据缓存类必要性分析(php数据缓存技术)  PHP数据缓存类 第1张

如果访问量大的话会给数据库造成很大的负担,所以对于变化不经常的内容要做好PHP数据cache(缓存)是十分必要的,我做了一个简单的PHP数据缓存类,希望对大家有所帮助。

思路是这样的:

对于一般的变量,把该变量变成PHP语言的格式,写到文件中,用时只要include这个文件就相当于加载了PHP数据缓存类了;

对于array型的变量,把array转化为PHP语言定义array的字符串,写到文件中,用时也只要include就相当于加载了cache了;

PHP数据缓存类时间上的控制,通过获取缓存文件的创建时间和现在的时间进行对比,如果没有到更新时间,直接读取缓存,如果到了更新时间,查询数据库,返回数据,再更新缓存。(尚未实现)

下面是我的PHP-kcache类(PHP_kcache_class.PHP):

注:如果是缓存字符串,请把转义字符多写一个’\',即”\n”要写成”\\n”。

  1. /*
  2. //PHP-kcacheclassv_0.1
  3. //Author:kangzj
  4. //Email:kangzj@mail.bnu.edu.cn
  5. //Blog:http://kangzj.net.ru
  6. //作者不保证本程序没有bug,对于使用本程序
  7. //而引起的任何问题不担负任何责任。
  8. */
  9. classPHP_kcache{
  10. //相对或者绝对目录,末尾不要加'/'
  11. var$cache_dir='./cache';
  12. var$cache_extension='.cache.PHP';
  13. functionset_cache($name,$value){
  14. $pre="<?\n//CacheCreatedat:"
    .date('Y-m-dH:i:s')."\n";
  15. if(!is_array($value)){
  16. $value=$value;
  17. $str="\$$name='$value';";
  18. }else{
  19. $str="\$$name=".$this->
    arrayeval($value).';';
  20. }
  21. $end="\n?>";
  22. echo$cache=$pre.$str.$end;
  23. $cache_file=$this->cache_dir.
    '/'.$name.$this-
    >cache_extension;
  24. if($fp=@fopen($cache_file,'wb')){
  25. fwrite($fp,$cache);
  26. fclose($fp);
  27. returntrue;
  28. }else{
  29. echo$cache_file;
  30. exit('Cannotwritetocachefiles,
    pleasecheckcachedirectory');
  31. returnfalse;
  32. }
  33. }
  34. //将array变成字符串,来自discuz!
  35. functionarrayeval($array,$level=0){
  36. if(!is_array($array)){
  37. return"'".$array."'";
  38. }
  39. $space='';
  40. for($i=0;$i<=$level;$i++){
  41. $space.="\t";
  42. }
  43. $evaluate="Array\n$space(\n";
  44. $comma=$space;
  45. if(is_array($array)){
  46. foreach($arrayas$key=>$val){
  47. $key=is_string($key)?'\''.addcslashes
    ($key,'\'\\').'\'':$key;
  48. $val=!is_array($val)&&
    (!preg_match("/^\-?[1-9]\d*$/",$val)
    ||strlen($val)
    >12)?'\''.addcslashes
    ($val,'\'\\').'\'':$val;
  49. if(is_array($val)){
  50. $evaluate.="$comma$key=>".
    arrayeval($val,$level+1);
  51. }else{
  52. $evaluate.="$comma$key=>$val";
  53. }
  54. $comma=",\n$space";
  55. }
  56. }
  57. $evaluate.="\n$space)";
  58. return$evaluate;
  59. }
  60. }


最简单的PHP数据缓存类调用方法:

  1. include'./PHP_kcache_class.PHP';
  2. $pc=newPHP_kcache;
  3. $a=array('a','b','c');
  4. $pc->set_cache('a',addslashes($a));
转载请说明出处
知优网 » PHP数据缓存类必要性分析(php数据缓存技术)

发表评论

您需要后才能发表评论