plantegg 发表于 2015-8-30 11:20:44

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

     以下为PHP使用CodeIgniter框架对文件的读写操作
   有什么改善的地方还希望各位提出!
<?phpif (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* Cache file
*@paramthe 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
   *
   * @paramstring $data    cache data
   * @param string $name    cache name
   * @paramint$life_time   cachelifetime
   */
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; //表示该文件不存在,重新创建该文件,
             }
   }
}
  ?>

当读取文件的时候,在程序中调用读取文件方法的时候进行判断,如果失败就调用写文件的方法重新创建该文件。如果成功就继续
页: [1]
查看完整版本: PHP读写文件的两个方法(CodeIgniter框架)