后台数据量小的时候,栏目及文档生成很快,但是当织梦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.khcha.com/ziyuan/view16756.htm