織夢dedecms數據量大生成欄目緩慢以及出現500錯誤一個可能原因及解決方法
搜收錄網整理 發布日期:2018/1/15 17:05:30
后臺數據量小的時候,欄目及文檔生成很快,但是當織夢cms系統數據量曾大以后,生成目錄就會越來越慢,直至發生500內部服務器錯誤。
產生錯誤的原因是數據庫數據量太大,生成時間太長導致超時錯誤。解決的辦法是分批次生成。記得早期的織夢后臺是分批次更新的,但不知為什么新版本沒了這個功能。
通過查看代碼發現分批次生成的代碼被注釋掉了,至于注釋掉的原因不得而知。
 
一、在后臺管理文件夾下找到makehtml_list_action.php 文件
在makehtml_list_action.php 的文件行 101 處
  //$lv->CountRecord();
  有這樣一處注釋掉的代碼,似乎DEDECMS的開發工程師因為其他原因注釋掉了這行代碼,這就導致了計算某個欄目類有多少分頁的代碼不能運行,從而導致后面一行
 
  if($lv->TypeLink->TypeInfos[‘ispart’]==0 && $lv->TypeLink->TypeInfos[‘isdefault’]!=-1) $ntotalpage = $lv->TotalPage;
else $ntotalpage = 1;
 
  導致這里面的 $ntotalpage 根本得不到值 (NULL),
  因為 $lv->TotalPage 是在$lv->CountRecord 函數里面賦值
  所以分批次生成的功能不能運行。
 
  從而想到,取消此處注釋,讓欄目生成HTML 分批進行
 
//如果欄目的文檔太多,分多批次更新
    if($ntotalpage <= $maxpagesize || $lv->TypeLink->TypeInfos['ispart']!=0 || $lv->TypeLink->TypeInfos['isdefault']==-1)
    {
        $reurl = $lv->MakeHtml('', '', $isremote);
        $finishType = TRUE;
    }
    else
    {
// 讓代碼進入此執行才是分批生成html
        $reurl = $lv->MakeHtml($mkpage, $maxpagesize, $isremote);
        $finishType = FALSE;
        $mkpage = $mkpage + $maxpagesize;
        if( $mkpage >= ($ntotalpage+1) ) $finishType = TRUE;
    }

信息網址://www.wwvhj.icu/ziyuan/view16756.htm
相關信息