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]