联系官方销售客服

1835022288

028-61286886

求助 版主:论坛审计组
非常严重的性能瓶颈问题,栏目文章数量统计及修改建议
类型:迅睿CMS 更新时间:2021-10-12 20:53:33

非常严重的性能瓶颈问题,栏目文章数量统计及修改建议


XunruiCMS 4.5.2(2021-10-05)

Fcms/Model/Content.php   

Line:566,  foreach ($category as $i => $c) {

Line:605,  $c['total'] = $this->db->table($siteid.'_'.$c['mid'].'_index')->where('status', 9)->where('catid', intval($c['id']))->countAllResults(); 


以上代码将循环运行 SELECT COUNT(*) FROM ...  查询N遍,有多少个栏目就会循环运行多少遍,是非常严重的性能问题。

建议官方修改此处代码,其实只需要一行SQL代码就可以搞定各栏目分类下文章数量的统计的,仅供参考:

SELECT catid,count(*) FROM dr_1_article_index GROUP BY catid



回帖
  • 迅睿框架联合创始人
    #1楼    迅睿框架联合创始人
    2021-10-12 20:28:59
    Chrome 0
    Fcms/Model/Content.php 😓 566行没有这个代码呢https://gitee.com/dayrui/xunruicms/blob/master/dayrui/Fcms/Model/Content.php
  • 何先生
    #2楼    何先生
    2021-10-12 20:37:45
    Chrome 0
    从未做过超过1万条数据的网站
  • 1850883026
    #3楼    1850883026
    2021-10-12 20:38:35
    Chrome 0
    Fcms/Model/Module.php
  • 迅睿框架联合创始人
    #4楼    迅睿框架联合创始人
    2021-10-12 20:40:15
    Chrome 0
  • 咖啡和茶
    #5楼    咖啡和茶
    2021-10-12 20:42:24
    Chrome 0
    你搜索一下哈这这几个字符,应该有两个地方,很快就找到了。
    countAllResults
  • 迅睿框架联合创始人
    #6楼    迅睿框架联合创始人
    2021-10-12 20:45:20
    Chrome 0
  • 咖啡和茶
    #7楼    咖啡和茶
    2021-10-12 20:46:22
    Chrome 0
    何先生 近期应该有不少(?或者大量?)从DEDECMS那边过来的站吧。这些站,百万文章数量,超过上百个栏目的,应该也有一些。我一个普通的站点,14万文章数量,600个栏目。 原先更新一次缓存需要 12秒时间,查到问题就是我上面说的这个foreach 循环内跑了 600次 SELECT COUNT(*) FROM ... 查询,我优化好后,现在只需要 0.5秒。
  • 文章
    #8楼    文章
    2021-10-12 20:52:29
    Chrome 0
    我上个月向创始人反应过这个问题,国庆的时候开发版已经没有了你这些代码了
    满意答案
  • 1850883026
    #9楼    1850883026
    2021-10-12 20:53:33
    Chrome 0
    @文章:好的,谢谢。等待新版本发布。