常见php数据文件缓存类汇总
网络编程 2021-07-05 09:50www.168986.cn编程入门
这篇文章主要介绍了常见php数据文件缓存类,实例讲述了php文件缓存与利用memcache来缓存数据的方法,代码封装性好,使用简单,是非常实用的技巧,需要的朋友可以参考下
本文实例汇总了常见php数据文件缓存类。分享给大家供大家参考。具体分析如下
数据文件缓存的做法我们常用的有php文件缓存与利用memcache来缓存数据,狼蚁网站SEO优化面我分别了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);
$ma = $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 .= "$ma$key => " . arrayEval($val, '', $level + 1);
}
else
{
$evaluate .= "$ma$key => $val";
}
$ma = ",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;
}
}
?>
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);
$ma = $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 .= "$ma$key => " . arrayEval($val, '', $level + 1);
}
else
{
$evaluate .= "$ma$key => $val";
}
$ma = ",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);
生成文件缓存
@param string $filePath 缓存文件的保存路径
@param string $arrayName 存放在缓存文件中的数组名称
@param array $data 数据
@return boolean
/
DataCache::writeCache($filePath, $arrayName, $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");
}
}
?>
/
文件缓存类
提供文件缓存
/
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程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程