[原创]viewContent 耗费内存过多的一个BUG
还是mambo4.5.2.3中文版。问题出在admin.content.php的viewContent子程序里。
在脚本文件第200行有这行代码:
$query = "SELECT c.*, g.name AS groupname, cc.name, u.name AS editor, f.content_id AS frontpage, s.title AS section_name, v.name AS author"
数据库在处理SELECT c.* 时,会把content表里所有东西弄到内存里,如果你的表足够大,内存会不够用,服务器就挂了。这段代码中,content表中fulltext、introtext在子程序里都没有用到,我们可以不检索这些字段。
这几天调试后台,我暂时改成这样:
//$query = "SELECT c.*,
$query = "SELECT c.id, c.title, c.state, c.sectionid, c.mask, c.catid, c.created, c.created_by,
c.checked_out, c.publish_up, c.publish_down, c.ordering , c.access,
g.name AS groupname, cc.name, u.name AS editor, f.content_id AS frontpage, s.title AS section_name, v.name AS author"
建议把content表中除fulltext和introtext所有字段都SELECT出来,我只用了一部分,字段列得不全,可能会有安全漏洞。
PS:改过之后,列表速度可以提高很多,因为排序时的数据量少了很多。