找回密码
 立即注册

QQ登录

只需一步,快速开始

Discuz!x3.4 转换到 Discuzq后 回复非常卡临时解决方案

领券优惠购买阿里云
具体情况:Discuz!x3.4 源站 数据库大小有3g 单Post表有2g以上 ,转换到Discuz! Q RC v2.3.210224后出现回复帖子出现严重卡顿现象。
故障原因:因为Discuzq每次发帖或回复都会统计一次,post表过大的情况下,会卡住
解决方法:

\app\Observer\PostObserver.php
搜索
  1. /**
  2.      * 刷新站点回复数
  3.      */
  4.     private function refreshSitePostCount()
  5.     {
  6.         $this->settings->set(
  7.             'post_count',
  8.             Post::query()
  9.                 ->where('is_approved', Post::APPROVED)
  10.                 ->whereNull('deleted_at')
  11.                 ->whereNotNull('user_id')
  12.                 ->count()
  13.         );
  14.     }
复制代码


修改为:
  1. /**
  2.      * 刷新站点回复数
  3.      */
  4.     private function refreshSitePostCount()
  5.     {
  6.         $cache = app('cache');
  7.         $cacheKey = 'post_count';
  8.         $redis_data= $cache->get($cacheKey);
  9.         if(empty($redis_data)){
  10.             $cache->put($cacheKey, Post::query()
  11.                 ->where('is_approved', Post::APPROVED)
  12.                 ->whereNull('deleted_at')
  13.                 ->whereNotNull('user_id')
  14.                 ->count(),86400);
  15.         }
  16.         $this->settings->set(
  17.             'post_count',
  18.             $redis_data
  19.         );
  20.     }
复制代码

\app\Observer\ThreadObserver.php
搜索:
  1. /**
  2.      * 刷新站点主题数
  3.      */
  4.     private function refreshSiteThreadCount()
  5.     {
  6.         $this->settings->set(
  7.             'thread_count',
  8.             Thread::query()
  9.                 ->where('is_approved', Thread::APPROVED)
  10.                 ->whereNull('deleted_at')
  11.                 ->whereNotNull('user_id')
  12.                 ->count()
  13.         );
  14.     }
复制代码

修改:

  1. /**
  2.      * 刷新站点主题数
  3.      */
  4.     private function refreshSiteThreadCount()
  5.     {
  6.         $cache = app('cache');
  7.         $cacheKey = 'thread_count';
  8.         $redis_data= $cache->get($cacheKey);
  9.         if(empty($redis_data)){
  10.             $cache->put($cacheKey, Thread::query()
  11.                 ->where('is_approved', Thread::APPROVED)
  12.                 ->whereNull('deleted_at')
  13.                 ->whereNotNull('user_id')
  14.                 ->count(),86400);
  15.         }
  16.         $this->settings->set(
  17.             'thread_count',
  18.             $redis_data
  19.         );
  20.     }
复制代码


更新缓存,故障解决
这个bug官方下版本会修复

本教程由无限星辰工作室CRX349独家整理和提供,转载请注明地址,谢谢。本文地址:https://www.xmspace.net/thread-870-1-1.html
无限星辰工作室  好集导航 Discuz全集下载  星辰站长网  集热爱361  一品文学  手机小游戏合集   海外空间网 星辰api  星辰支付二维码管理平台 阿里云服务器 腾讯云服务器
服务Discuz!建站|DiscuzQ配置|二开|小程序|APP|搬家|挂马清理|防护|Win/Linux环境搭建|优化|运维|
服务理念:专业 诚信 友好QQ842062626 服务项目 Q群315524225
发表于 2021-2-28 13:28:24 | 显示全部楼层 |阅读模式

回复 | 使用道具 举报

该帖共收到 0 条回复!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

美图秀

    • Discuz!x3.2-3.4 登陆错误次数永远4次bug修
    • Nextcloud 出现 请求过多 解决方案
    • Win10下 Python虚拟环境搭建
    • VirtualBOX 迁移到Proxmox 注意事项
    • Let’s Encrypt泛域名证书 转换为IIS用的pf
拖动客服框
Online Service
点击这里给我发消息
点击这里联系我们
微信扫一扫
在线客服
快速回复 返回顶部 返回列表