QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

微信扫一扫 分享朋友圈

已有 10503 人浏览分享

开启左侧

Discuz升级X3.5后要手动清理Redis内存,否则提示门户和论坛关闭

[复制链接]
10503 0
  近日,网站从Discuz X3.4升级到3.5,大部分都正常,但出现了一个奇怪的现象,就是每天得进后台,手工进行性能优化-内存优化-Redis内存清理,不然凌晨3:30后(这个时间非常精确,每天都是这样),前台提示门户和论坛关闭(实际上并没有关闭),并且输出Array字样,页面样式都错乱了。这时只要登录后台进行内存优化-内存清理,或者直接 redis-cli FLUSHALL一下,网站即恢复正常。
004.png
  我看了nginx日志、系统日志、redis日志都没有发现错误原因。重新安装了最新版redis,问题依旧。如果内存接口改成file模式,则不出现这个问题。
在官方论坛提了问,官方回复说经过测试没有遇到我这样的问题,没有办法,只能自己想办法解决。
001.png
  首先是3:30这个时间点很精准特殊,于是我就查看网站计划任务和系统计划任务,有没有3:30运行的任务,一查,有一个自己设置的生成网站sitemap的php程序。
002.png
  于是我修改了计划任务时间,让系统再次执行这个php程序,发现果然出现了上面一模一样的情况,这就确定了问题所在。
  这个php代码没有问题呀,一直能正常工作。既然问题在这里,就打开再一行一行的review代码。发现除了生成sitemap文件之外,在当时在编码时,为了看到效果,用了echo输出一些字符。尝试着把里面的echo输出代码删除掉,计划任务再运行,一切正常了。可能正是因为这些echo输出,导致redis出了错,最终产生了前面的一系列问题。
  但接下来又有新问题了:echo输出在3.4里面正常,为啥3.5里面就出错了呢?可能是redis读取数据的方式改变了造成的吧。反正通过这个操作,问题已经解决了。
  最后附送一段生成sitemap的代码:请修改网址后,存放到source/include/cron目录,通过dz的计划任务执行:
  1. <?php
  2.         if(!defined('IN_DISCUZ')) {
  3.                 exit('Access Denied');
  4.         }
  5.         $querys = DB::query("SELECT aid FROM ".DB::table('portal_article_title').' ORDER BY aid DESC');
  6.         $data = 'https://www.wancili.com'."\n";
  7.         $data = $data.'https://www.wancili.com/forum.php'."\n";
  8.         $siteurl = "https://www.wancili.com/";
  9.         $datetime = date('Y-m-d');
  10.         $xmldata = "<?xml version="1.0" encoding="utf-8"?>"."\n"."<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">";
  11.         $tmp = "\n        <url>               
  12.                 <loc>[url]https://www.wancili.com[/url]</loc>
  13.                 <lastmod>{$datetime}</lastmod>
  14.                 <changefreq>daily</changefreq>
  15.                 <priority>1.0</priority>
  16.         </url>";               
  17.         $xmldata = $xmldata.$tmp;        
  18.         $tmp = "\n        <url>               
  19.                 <loc>[url]https://www.wancili.com/forum.php</loc>[/url]
  20.                 <lastmod>{$datetime}</lastmod>
  21.                 <changefreq>daily</changefreq>
  22.                 <priority>1.0</priority>
  23.         </url>";               
  24.         $xmldata = $xmldata.$tmp;        
  25.         while($articleaid = DB::fetch($querys))
  26.         {
  27.                 $aurl = "{$siteurl}article-{$articleaid['aid']}-1.html";
  28.                 $data = $data.$aurl."\n";
  29.                 $tmp = "\n        <url>               
  30.                 <loc>{$aurl}</loc>
  31.                 <changefreq>weekly</changefreq>
  32.                 <priority>0.9</priority>
  33.         </url>";               
  34.                 $xmldata = $xmldata.$tmp;               
  35.         }
  36.         $querys = DB::query("SELECT tid FROM ".DB::table('forum_thread').' WHERE displayorder=0 ORDER BY tid DESC');
  37.         while($threadfid = DB::fetch($querys))
  38.         {
  39.                 $furl = "{$siteurl}thread-{$threadfid['tid']}-1-1.html";
  40.                 $data = $data.$furl."\n";
  41.                 $tmp = "\n        <url>               
  42.                 <loc>{$furl}</loc>
  43.                 <changefreq>weekly</changefreq>
  44.                 <priority>0.9</priority>
  45.         </url>";               
  46.                 $xmldata = $xmldata.$tmp;        
  47.         }
  48.         $xmldata = $xmldata."\n</urlset>";
  49.         $fp = fopen($_SERVER["DOCUMENT_ROOT"].'/sitemap.txt',"w+");
  50.     fwrite($fp,$data);
  51.     fclose($fp);
  52.         $fp = fopen($_SERVER["DOCUMENT_ROOT"].'/sitemap.xml',"w+");
  53.     fwrite($fp,$xmldata);
  54.     fclose($fp);        
  55. ?>
复制代码

上一篇:Discuz升级3.5后,能发帖不能回复,显示Duplicate entry错误
下一篇:将ChatGPT与微信公众号打通,实现与人工智能的对话交互
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

36

关注

177

粉丝

13506

主题
热门资讯
网友晒图
  • 公众号

    微信公众号

  • 微信

    站长微信

Powered by Discuz! 在此致以诚挚谢意!

CopyRight © 2011-2024 wancili.com