常见php数据文件缓存类汇总
发布:smiling 来源: PHP粉丝网 添加日期:2021-05-02 21:22:53 浏览: 评论:0
这篇文章主要介绍了常见php数据文件缓存类,实例讲述了php文件缓存与利用memcache来缓存数据的方法,代码封装性好,使用简单,是非常实用的技巧,需要的朋友可以参考下。
本文实例汇总了常见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, $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");
- } //www.phpfensi.com
- }
- ?>
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
Tags: php数据 php文件缓存类
- 上一篇:php树型类实例
- 下一篇:PHP生成RSS文件类实例
相关文章
- ·几个简单的php数据文件缓存类(2014-07-29)
- ·PHP 数据库缓存Memcache操作类(2014-09-10)
- ·PHP数据库处理类(2014-09-10)
- ·PHP封装数据库操作类(2014-09-10)
- ·php数据库操作类,可用mysql,mssql,pg(2014-09-11)
- ·php数据库写入操作类(2014-09-11)
- ·php mysql完整数据库连接类(2014-09-11)
- ·php数据库连接类(2014-09-11)
- ·实用mysql数据库连接类(2014-09-11)
- ·简单的MYsql操作类(2014-09-11)
- ·强大的php数据库操作类,支持mysql,mssql,pg(2015-04-15)
- ·php面象对象数据库操作类实例(2021-05-01)
- ·php实现比较全的数据库操作类(2021-05-28)
- ·PHP基于单例模式实现的数据库操作基类(2021-07-06)
- ·PHP数据库操作Helper类完整实例(2021-08-03)
- ·PHP DB 数据库连接类定义与用法示例(2021-11-12)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)