以下为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; //表示该文件不存在,重新创建该文件,
}
}
}
?>
当读取文件的时候,在程序中调用读取文件方法的时候进行判断,如果失败就调用写文件的方法重新创建该文件。如果成功就继续
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com