好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php中文件缓存实现程序代码 - php高级应用

php中文件缓存实现程序代码

php文件缓存就是指把缓存生成一个文件,这个文件可以是php,txt等等文件,当我下载访问时就来判断访问上次生成时间,如果超过了我们指定的时间再重新生成一次,否则就直接调用缓存文件,这样就可以减少了对mysql数据库的查询了.

php文件缓存原理

把需要缓存的数据通过serialize函数序列化后直接保存到文件,在需要使用缓存数据的时候,通过反序列化读入文件内容并复制给需要的变量,然后使用,不经常改动的数据可以写入缓存文件.

php文件缓存实例,代码如下:

 index.php   define( 'CACHE_ROOT' , './' );    include_once ( './cache.func.php' );    $file  =  'qzp' ;    $cacheFile  = getCacheFileByID( $file , 'info/' );     print_R(readCache( $cacheFile ));      $info  =  array (         'username' => 'qzp' ,         'area_name' => 'admin' ,         'mp_name' => '1234' ,         'gh_name' => '5678' );  writeCache( $cacheFile , $info );    cache.func.php文件      function  arrayeval( $array ,  $level  = 0) {       $space  =  '' ;       for ( $i  = 0;  $i  <=  $level ;  $i ++) {           $space  .=  "t" ;      }       $evaluate  =  "Arrayn$space(n" ;       $comma  =  $space ;       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 ;  }    function  getCacheFileByID( $id , $pre = 'info/' , $md5 =true){    if ( $md5 ){     $md5id  = md5( $id );     return  CACHE_ROOT. '/' . $pre . substr ( $md5id ,0,2). '/' . substr ( $md5id ,2,2). '/' . $id ;   } else {     return  CACHE_ROOT. '/' . $pre . $id ;   }  }    function  readCache( $filename , $time =0){    if ( $datas  = @ file_get_contents ( $filename )){     $datas  = unserialize( $datas );     if ( $time  < 1 || (time() -  $datas [ 'time' ] <  $time )){      return   $datas [ 'data' ];    }   }    return  false;  }    function  writeCache( $filename , $data ){   makeDir(dirname( $filename ));    if ( $handle  =  fopen ( $filename , 'w+' )){     $datas  =  array ( 'data' => $data , 'time' =>time());     flock ( $handle ,LOCK_EX);     $rs  =  fputs ( $handle ,serialize( $datas ));     flock ( $handle ,LOCK_UN);    fclose( $handle );     if ( $rs !==false){      return  true;    }   }    return  false;  }    function  makeDir( $path )  { //开源代码phpfensi测试数据     if  (!  file_exists  (  $path  )) {    makeDir ( dirname (  $path  ) );     if  (!  mkdir  (  $path , 0777 ))     die  (  '无法创建文件夹'  .  $path  );   }  } 

把要缓存的文件序列化下存放起来,当使用的时候反序列化回来使用,使用对PHP模板数据进行缓存的工具smarty,smarty将HTML文件缓存成一个静态的HTML页,需要缓存的模板文件可以使用smarty.

例,代码如下:

<?php  //包含Smarty类库   require ( 'libs/Smarty.class.php' );    //创建Smarty类的对象   $smarty  =  new  Smarty;    //启用缓存   $smarty ->caching = true;    //指定缓存文件保存的目录   $smarty ->cache_dir =  "./cache/" ;    //也会把输出保存   $smarty ->display( 'index.tpl' )  ?> 

查看更多关于php中文件缓存实现程序代码 - php高级应用的详细内容...

  阅读:42次