加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 02:14:48 所属栏目:PHP教程 来源:网络整理
导读:《PHP实战:常见php数据文件缓存类汇总》要点: 本文介绍了PHP实战:常见php数据文件缓存类汇总,希望对您有用。如果有疑问,可以联系我们。 PHP应用 本文实例汇总了常见php数据文件缓存类.供大家参考研究.具体分析如下: 数据文件缓存的做法我们常用

《PHP实战:常见php数据文件缓存类汇总》要点:
本文介绍了PHP实战:常见php数据文件缓存类汇总,希望对您有用。如果有疑问,可以联系我们。

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

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

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

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

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

文件缓存类,代码如下:

代码如下:
<?php
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,$data);

memcache来缓存数据,这里提供这个文件缓存的类,代码如下:
代码如下:
<?php
/**
?* 文件缓存类
?* 提供文件缓存
?*/
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程序设计有所帮助.

《PHP实战:常见php数据文件缓存类汇总》是否对您有启发,欢迎查看更多与《PHP实战:常见php数据文件缓存类汇总》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读