后臺數據量小的時候,欄目及文檔生成很快,但是當織夢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;
}
信息網址:http://www.133224.live/ziyuan/view16756.htm