搜索

海洋cms设置Redis缓存教程,redis错误/白屏无法访问解决办法

[复制链接]
admin 发表于 2017-2-27 11:42:52 | 显示全部楼层 |阅读模式

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

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

x
如果出现白屏 500错误,请检查Redis服务是否成功运行。

=====强制关闭Redis办法=====
修改data/config.cache.inc.php文件:
  1. $cfg_cachetype = 'redis';
复制代码
修改为:
  1. $cfg_cachetype = 'file';
复制代码

=====Redis无效的常见错误原因=====
【1】防火墙阻拦
【2】SELinux导致启动失败
【3】windows系统下没有加入系统服务
【4】Linux没有开机启动

=====检测Redis是否成功运行的办法=====
在网站根目录下新建redis.php文件,代码如下:
  1. <?php
  2.    //连接本地的 Redis 服务
  3.    $redis = new Redis();
  4.    $redis->connect('127.0.0.1', 6379);
  5.    echo "Connection to server sucessfully";
  6.    //设置 redis 字符串数据
  7.    $redis->set("tutorial-name", "Redis tutorial");
  8.    // 获取存储的数据并输出
  9.    echo "Stored string in redis:: " . $redis->get("tutorial-name");
  10. ?>
复制代码
用浏览器访问 http://你的网址/redis.php,应该出现如下结果:
  1. Connection to server sucessfully
  2. Stored string in redis:: Redis tutorial
复制代码
如果运行页面报错,或者没有出现上面的结果,则证明Redis没有成功运行!

=====宝塔面板启用Redis方法=====

1. 软件管理 - 安装Redis
2. 安全 - 放行Redis的端口:6379
3. 软件管理 - php设置 - 安装Redis扩展



=====老版本海洋cms增加Redis缓存支持=====
注意:海洋cms v8.2版本开始,已经自带Redis缓存功能,无需单独添加。
编辑 /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. }
复制代码




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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

口袋影院 发表于 2018-8-27 11:27:58 | 显示全部楼层
改了后台不能进,网站都打不开了???
回复

使用道具 举报

oy86866 发表于 2018-11-10 19:24:34 | 显示全部楼层
同样,根本用不了。。。。admin 你可以测试下。。
回复

使用道具 举报

zengrong 发表于 2019-1-7 01:34:07 | 显示全部楼层
打开网站空白,无任何显示
回复

使用道具 举报

小黑屋|海洋CMS

GMT+8, 2019-1-21 09:33 , Processed in 0.110743 second(s), 32 queries .

Powered by SeaCMS!

© 2015-2018 seacms.net.

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