php数据库缓存类,常见php数据文件缓存类汇总

本文实例汇总了常见php数据文件缓存类。分享给大家供大家参考。具体分析如下:

数据文件缓存的做法我们常用的有php文件缓存与利用memcache来缓存数据,下面面我分别总结了memcache缓存数据与数据文件缓存。感兴趣的朋友可以参考一下。

1.对于一般的变量,把该变量变成php语言的格式,写到文件中,用时只要include这个文件就相当于加载了cache了.

2.对于array型的变量,把array转化为php语言定义array的字符串,写到文件中,用时也只要include就相当于加载了cache了.

3.缓存cache时间上的控制,通过获取缓存文件的创建时间和现在的时间进行对比,如果没有到更新时间,直接读取缓存,如果到了更新时间,查询数据库.

文件缓存类,代码如下:

class DataCache

{

/**

* 数组转换

*

* @param array $array

* @param string $arrayName

* @param array $level

*

* @return string

*/

private function arrayEval($array, $arrayName = '', $level = 0)

{

$space = str_repeat("t", $level);

if (emptyempty($arrayName))

{

$evaluate = "arrayn$space(n";

}

else

{

$evaluate = "${$arrayName} = arrayn$space(n";

}

$space2 = str_repeat("t", $level + 1);

$comma = $space2;

if (!emptyempty($array))

{

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$space2";

}

}

$evaluate .= "n$space)";

// 最后才需要一个“;”

if ($level == 0)

{

$evaluate .= ";";

}

return $evaluate;

}

/**

* 写入缓存

*

* @param string $path

* @param string $arrayName

* @param array  $data

*

* @return boolean

*/

public static function writeCache($path, $arrayName, $data)

{

if ($handle = fopen($path, 'w+'))

{

$data = self::arrayEval($data, $arrayName);

$dataConvert = "<?phpn " . $data;

flock($handle, LOCK_EX);

$rs = fputs($handle, $dataConvert);

flock($handle, LOCK_UN);

fclose($handle);

if ($rs !== false)

{

return true;

}

}

return false;

}

}

?>

调用方法,代码如下:

/**

* 生成文件缓存

*

* @param string $filePath 缓存文件的保存路径

* @param string $arrayName 存放在缓存文件中的数组名称

* @param array $data 数据

*

* @return boolean

*/

DataCache::writeCache($filePath, $arrayName, $data);

memcache来缓存数据,这里提供这个文件缓存的类,代码如下:

/**

* 文件缓存类

* 提供文件缓存

*/

class Cache_FileCache{

/**

* 设置缓存

* @param $key 缓存的关键字key

* @param $data 缓存的内容

* @param $cacheLife 缓存时间(单位为秒)如果为0 则表示无限时间

* @return Bool

*/

public static function setCache($key,$data,$cacheLife)

{

if(file_exists(__SITE_FILE_CACHE))

{

@$file                =  __SITE_FILE_CACHE . "/" . $key .".php";

$cache                  =  array();

$time                =  __SYS_TIME;

$cache['content']    =  $data;

$cache['expire']    =  $cacheLife === 0 ? 0 : $time+$cacheLife;

$cache['mtime']        =  $time;

$cache                =  serialize($cache);

$setReslut            =  @file_put_contents($file,$cache) or self::error(__line__,"文件写入出错");

$chmodReslut        =  @chmod($file,0777) or self::error(__line__,"设定文件权限失败");

if($setReslut && $chmodReslut)

{

return true;

}

else

{

return false;

}

}

}

/**

* 得到缓存数据

* @param $key 缓存的关键字key

* @return array

*/

public static function getCache($key)

{

@$file                =      __SITE_FILE_CACHE . "/" . $key .".php";

if(file_exists($file))

{

$data        =    @file_get_contents($file);

$data        =   unserialize($data);

if($data['expire']==0 || $data['expire'] > __SYS_TIME)

{

return $data['content'];

}

else

{

unlink($file);

return array();

}

}

}

/**

* 删除缓存文件

* @param $key 缓存$key

* @return Bool

*/

public static function delCache($key)

{

if (@unlink(__SITE_FILE_CACHE."/".$key.".php"))

{

return true;

}

else

{

return false;

}

}

/**

* 清除所有缓存文件

* @return Bool

*/

public static function clearAllCache()

{

$files = scandir(__SITE_FILE_CACHE);

foreach ($files as $val)

{

@unlink(__SITE_FILE_CACHE."/".$val);

}

}

/**

* 出错处理函数

* @param $line 行数

* @param $msg  信息

*/

public static function error($line,$msg)

{

die("出错文件:".__file__."/n出错行:$line/n错误信息:$msg");

}

}

?>

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单片微型计算机(MCU)经过多年的发展,在性能上有很大的进步,在型号上发展到上千种,已经广泛应用于人社会生活的各个领域。单片机课程已经成为高校计算机、自动化、测控以及电子信息工程等专业的重要课程。该课程是一门理论性和实践性都很强的课程,在实际教学中,应将理论教学和实验教学紧密结合。学生在掌握理论知识之余,必须通过编写程序、设计硬件电路、仿真、调试这一系列的实验过程,才能更好地掌握单片机的结构原理和应用技能。随着单片机及其接口技术的飞速发展,目前市场上供应的编程仿真实验资源并不能完全满足高校单片机课程教与学的需求,构建低成本、技术先进、源码公开的单片机编程仿真实验系统,对我国单片机课程的教学和单片机领域人才的培养具有重要的现实意义。 本论文结合目前教学中对单片机编程仿真实验系统的实际需求,采用模块化结构设计思想,精心设计和开发了单片机编程仿真实验系统。该单片机编程仿真实验系统由PC机端单片机编程控制软件和单片机编程仿真实验板两部分组成。PC机端的单片机编程控制软件可以自动检测到连接到单片机编程仿真实验板上的单片机,控制单片机编程器擦除、写入、读出、校验目标单片机ROM中的程序,以十六进制文件(.HEX文件)格式显示在控制界面内;单片机仿真实验系统能够把写入单片机的程序实时地运行,并呈现实际运行效果。单片机编程控制软件和单片机仿真实验板组成一个完整的单片机编程仿真实验系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值