PHP读写文件的两个方法(CodeIgniter框架)

   以下为PHP使用CodeIgniter框架对文件的读写操作
   有什么改善的地方还希望各位提出!
<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
 * Cache file
 *@param  the dir for save the cache file
 *@param cache life time    (minutes)
 *@param string the cache file path
 */
class Cache {
 
  var $time  = 10; 
  /**
   * establishment the cache file
   *
   * @param  string $data    cache data
   * @param string $name    cache name
   * @param  int  $life_time     cache  lifetime
   */
 function set_cache($data = null, $name = null, $life_time = null)
 {
   /*set cache life time */
     $this->time    = $life_time; 

     /* set cache path and name*/
      $cache_file   = BASEPATH.'cache/'. md5($name).'ngcache'; //对文件名进行加密

      /* check the cache is exists */
       /* Circulation write data  */
     if(count($data) > 0 && $data != null && $data != "")
     {
       if(!file_exists($cache_file))
       {
                 $fp = @fopen( $cache_file,"w");
                 @fclose($fp);
       }
       /* openg the exists cache file */
      $fp = @fopen($cache_file, 'w');
      @flock($fp, LOCK_EX);
       foreach ($data as $ng)
       {
        $str   = $ng['M_WORD_STRING'];
        $str           .= "\r\n";
       @fwrite($fp, $str);
       }
       return 'action';  //有数据返回字符串action,在外面判断该文件有数据存在,并且是否写入成功
     }
     else
     {
       return true; // 没有数据返回True,在外面判断该文件为空,并且是否写入成功
     }
 }
 
 /**
  * Get STRING from the cache file
  *
  * @param $name    cache name 
  * @return   bool
  */
 function get_cache_data($name = null)
 {
   $cache_file = BASEPATH.'cache/'. md5($name).'ngcache';

       /* the time is which the cache file was establishmented  */
  $cache_edit_time = @filemtime($cache_file);  //获取创建该文件的时间
  $current_time  = time();    //得到当前系统时间
  
  /* judge the file is exist*/
   if(file_exists($cache_file))
             {
              /* computation time difference  */
    $diff_time = $current_time-$cache_edit_time;
    $day  = intval($diff_time/86400);
    $hour  = intval(($diff_time-$day*86400)/3600);
    $minutes = intval(($diff_time-$day*86400-$hour*3600)/60);

   /* cache file is out time , delete the cache file*/  
   if($minutes > $this->time)
   { 
    @unlink($cache_file);  //删除文件
    return false; //表明现在该文件不存在,需重新创建
   }
           $fp = @fopen($cache_file, "r");

          if($fp)
          {
           /* take the cache data into array */
                      $this->cachetoarray = @file_get_contents($cache_file);
                      /* Transformation data  */
                      $chars = preg_split('/\r\n/', $this->cachetoarray, -1, PREG_SPLIT_OFFSET_CAPTURE);
                      $cache_arr = $chars;
             @fclose($fp);             
     return $cache_arr; //返回读出的数据
     exit();
           }
   else
   {
    return false; //表示读取失败
   }   
             }
    else
     {
                 return false; //表示该文件不存在,重新创建该文件,
             }

 }
}

?>

当读取文件的时候,在程序中调用读取文件方法的时候进行判断,如果失败就调用写文件的方法重新创建该文件。如果成功就继续

你可能感兴趣的:(CodeIgniter)