海洋CMS

 找回密码
 注册加入

海洋cms最新动态 关注跟踪研发进展,共创和谐未来 开源透明 完全免费 - 极致专注 精益求精

海洋CMS 6.x 正式版下载 永久免费并开源的影视建站程序 使用教程 - 模板标签 - 模板 - 播放器

火车头采集发布视频文章 - - 定时自动采集教程 迅雷下载展示插件及教程 - - 定时自动生成使用说明 原MaxCms模板转换教程 - - 原MaxCms数据转换工具

查看: 3081|回复: 10

改造海洋cms文件缓存为Redis缓存系统教程

[复制链接]

158

主题

1930

帖子

968万

积分

管理员

Rank: 9Rank: 9Rank: 9

金币
9670268
发表于 2017-2-27 11:42:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册加入

x
编辑 /include/common.func.php 文件第1514行,将
  1. function setCache($p_cacheName,$sql="",$arr=""){
  2.     global $dsql,$cfg_iscache,$cfg_cachetime,$cfg_cachemark;
  3.     $cacheFile=sea_ROOT.'/data/cache/'.$cfg_cachemark.$p_cacheName.'.inc';
  4.     $mintime = time() - $cfg_cachetime*60;
  5.     if(!file_exists($cacheFile) || ( file_exists($cacheFile) && ($mintime > filemtime($cacheFile)))){
  6.         if (!empty($sql)){
  7.         $dsql->SetQuery($sql);
  8.         $dsql->Execute('hw');
  9.         $cacher=array();
  10.             while($cache=$dsql->GetObject('hw'))
  11.             {
  12.             $cacher[]=$cache;
  13.             }
  14.         }else{
  15.             $cacher=$arr;
  16.         }
  17.         if (!empty($p_cacheName)){
  18.             $fp = fopen($cacheFile,'w') or die("Write Cache File Error! ");
  19.             fwrite($fp,serialize($cacher));
  20.             fclose($fp);
  21.         }
  22.         unset($cacher);
  23.     }
  24. }

  25. function getCache($p_cacheName){
  26.     global $cfg_cachemark;
  27.     $cacheFile=sea_ROOT.'/data/cache/'.$cfg_cachemark.$p_cacheName.'.inc';
  28.     if(file_exists($cacheFile)){
  29.         return unserialize(file_get_contents($cacheFile));
  30.     }else{
  31.         return array();
  32.     }
  33. }
复制代码
修改为:
  1. function setCache($p_cacheName,$sql="",$arr=""){
  2.         global $dsql,$cfg_iscache,$cfg_cachetime,$cfg_cachemark;
  3.         $p_cacheName=$cfg_cachemark.$p_cacheName;
  4.         $redis = new redis();  
  5.         $redis->connect('127.0.0.1', 6379);  
  6.         $ttl=$redis->TTL($p_cacheName);
  7.         if ($ttl < 1 ){
  8.                 if (!empty($sql)){
  9.                         $dsql->SetQuery($sql);
  10.                         $dsql->Execute('hw');
  11.                         $cacher=array();
  12.                   while($cache=$dsql->GetObject('hw'))
  13.                         {
  14.                         $cacher[]=$cache;
  15.                         }
  16.                 }else{
  17.                         $cacher=$arr;
  18.                 }
  19.                 if (!empty($p_cacheName)){
  20.                         $redis->SETEX($p_cacheName,$cfg_cachetime*60,serialize($cacher));
  21.                 }
  22.                 unset($cacher);
  23.         }
  24. }

  25. function getCache($p_cacheName){
  26.         global $cfg_cachemark;
  27.         $p_cacheName=$cfg_cachemark.$p_cacheName;
  28.         $redis = new redis();  
  29.         $redis->connect('127.0.0.1', 6379);  
  30.         $ttl=$redis->TTL($p_cacheName);
  31.         if ($ttl > 0 ){
  32.                 return unserialize($redis->GET($p_cacheName));
  33.         }else{
  34.                 return array();
  35.         }
  36. }
复制代码
编辑 /include/common.func.php 文件第2403行,将
  1. function chkFileCache($cacheName)
  2. {
  3.     global $cfg_cachetime,$cfg_cachemark;
  4.     $cacheFile=sea_ROOT.'/data/cache/'.$cfg_cachemark.$cacheName.'.inc';
  5.     $mintime = time() - $cfg_cachetime*60;
  6.     if(!file_exists($cacheFile) || ( file_exists($cacheFile) && ($mintime > filemtime($cacheFile)))){
  7.         return false;
  8.     }else{
  9.         return true;
  10.     }
  11. }

  12. function setFileCache($cacheName,$cacheValue)
  13. {
  14.     global $cfg_cachemark;
  15.     $cacheFile=sea_ROOT.'/data/cache/'.$cfg_cachemark.$cacheName.'.inc';
  16.     if($cacheName){
  17.         $fp = fopen($cacheFile,'w') or dir("Write Cache File Error! ");
  18.         fwrite($fp,$cacheValue);
  19.         fclose($fp);
  20.     }
  21. }

  22. function getFileCache($cacheName)
  23. {
  24.     global $cfg_cachemark;
  25.     $cacheFile=sea_ROOT.'/data/cache/'.$cfg_cachemark.$cacheName.'.inc';
  26.     if(file_exists($cacheFile)){
  27.         @$fp = fopen($cacheFile,'r');
  28.         @$cacheValue = fread($fp,filesize($cacheFile));
  29.         @fclose($fp);
  30.         return $cacheValue;
  31.     }else{
  32.         return "";
  33.     }
  34. }
复制代码
修改为:
  1. function chkFileCache($cacheName)
  2. {
  3.         global $cfg_cachemark;
  4.         $cacheName=$cfg_cachemark.$cacheName;
  5.         $redis = new redis();  
  6.         $redis->connect('127.0.0.1', 6379);  
  7.         $ttl=$redis->TTL($cacheName);
  8.         if ($ttl > 0){
  9.                 return true;
  10.         }else{
  11.                 return false;
  12.         }
  13. }

  14. function setFileCache($cacheName,$cacheValue)
  15. {
  16.         global $cfg_cachetime,$cfg_cachemark;
  17.         $cacheName=$cfg_cachemark.$cacheName;
  18.         $redis = new redis();  
  19.         $redis->connect('127.0.0.1', 6379);  
  20.         if ($redis->SETEX($cacheName,$cfg_cachetime*60,$cacheValue)){
  21.                 return true;
  22.         }else{
  23.                 return false;
  24.         }
  25. }

  26. function getFileCache($cacheName)
  27. {
  28.         global $cfg_cachemark;
  29.         $cacheName=$cfg_cachemark.$cacheName;
  30.         $redis = new redis();  
  31.         $redis->connect('127.0.0.1', 6379);  
  32.         return $redis->GET($cacheName);
  33. }
复制代码



原文:https://www.2dan.cc/seacms/file-redis-cache.html

23

主题

70

帖子

1140

积分

金牌会员

Rank: 6Rank: 6

金币
226
发表于 2017-3-4 16:17:13 | 显示全部楼层
这个要顶,文件缓存的确是不够用的
回复

使用道具 举报

13

主题

54

帖子

6524

积分

论坛元老

Rank: 8Rank: 8

金币
2198
发表于 2017-3-7 19:59:21 | 显示全部楼层
顶!如果后台能增加个使用Redis缓存的选项就好了
回复

使用道具 举报

8

主题

32

帖子

772

积分

高级会员

Rank: 4

金币
69
发表于 2017-3-19 15:41:50 | 显示全部楼层
这段代码。放程序哪里。那个位置。。redis配置好了
回复

使用道具 举报

8

主题

32

帖子

772

积分

高级会员

Rank: 4

金币
69
发表于 2017-4-14 01:13:20 | 显示全部楼层
你这缓存文件是要放那个目录。不能告知下?
回复

使用道具 举报

1

主题

8

帖子

236

积分

中级会员

Rank: 3Rank: 3

金币
48
发表于 2017-6-2 12:10:17 | 显示全部楼层
收藏 好东西啊!!!
回复

使用道具 举报

0

主题

12

帖子

127

积分

注册会员

Rank: 2

金币
51
发表于 2017-11-1 11:27:34 | 显示全部楼层
没有下文了,不作解答很郁闷!
回复

使用道具 举报

0

主题

4

帖子

22

积分

新手上路

Rank: 1

金币
2
发表于 2017-11-7 00:18:44 | 显示全部楼层
这段代码。放程序哪里。那个位置
回复

使用道具 举报

1

主题

7

帖子

126

积分

注册会员

Rank: 2

金币
53
发表于 2017-12-24 16:24:18 | 显示全部楼层
这段代码。放程序哪里
回复

使用道具 举报

2

主题

9

帖子

53

积分

注册会员

Rank: 2

金币
3
发表于 2017-12-24 23:19:43 | 显示全部楼层
感谢管理员大大分享,学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册加入

本版积分规则

小黑屋|海洋CMS

GMT+8, 2018-10-21 02:15 , Processed in 0.062555 second(s), 30 queries .

Powered by SeaCMS .Net

© 2018 All Rights Reserved

快速回复 返回顶部 返回列表