会员登录 | 会员注册 | 意见建议 | 网站地图

站长资源综合门户

当前位置:首页 > 网络安全 > DEDECMS、帝国CMS、PHPCMS对比PHPCMS的BUG

DEDECMS、帝国CMS、PHPCMS对比PHPCMS的BUG

时间:2011-08-31 15:05:58   作者:   来源:chinaz   点击:

本文中落叶详细分析下PHPCMS2008中一直存在的并且在sp4最终版中仍然存在的严重甚至低级的问题及一些使用中遇见的“见鬼”的问题。

A、低级问题/BUG:

1.删除栏目时所有子栏目和子栏目下所有文章不作任何提示,直接删除。

一般的思路时,如果栏目下有子栏目,或者栏目下已经有多篇文章,删除时应该提示该栏目不允许删除,或者至少应该给出危险警告,结果PHPCMS中是 一不小心,点删除栏目,然后弹出的JS中“是否要删除栏目”点了确定后,就一下子所有子栏目全部干掉了,这也意味着这些所有栏目下的文章也没办法显示了。 虽然可以根据PHPCMS中DATA目录下的栏目缓存中手动在数据库中找回这些栏目,但这个引起的麻烦自不待言了。

很多新技术员进来时,使用PHPCMS套站时,我都很明确的说明,PHPCMS后台不允许做任何删除操作,然而还是常有因为误点击而导致几十个子栏 目及栏目因为这样的误点击全部消失的情况。不过,落叶在新站规划时,一般都会修改PHPCMS栏目删除对应方法,删除前先查询栏目是否有子栏目,然后子栏 目是否有文章,如果有需先删除文章,再删除子栏目,才能删除父栏目。

2.移动栏目后栏目关系字段没能正确更新,删除原栏目的父栏目,已经移走的子栏目会跟着被全部干掉

落叶不止一次发生过这样的杯具,原来B栏目是A栏目的子栏目,后来想到B栏目独立出来做一级栏目更好,于是把B栏目修改为一级栏目,然后更新栏目缓 存,修复栏目数据,心想这下应该没问题了,然后删掉A栏目,结果大杯具发生了,整个A栏目及B栏目以及B栏目以下的所有栏目跟着被删除了。

问题出现的原因:PHPCMS无限级分类每个分类中以arrchildid字段记录了所有子栏目的ID,当把B栏目称出后,PHPCMS程序中没能 对B栏目的原父栏目的相关字段正常更新,结果删除A栏目时,遍历arrchildid中的所有子栏目,括B栏目,一起全部干掉了。

3.添加栏目时缓存重复更新,栏目多后修改栏目保存时慢到不可理解的问题。

PHPCMS在编辑栏目后保存时,会自动调用修复栏目的repair()方法和更新所有栏目缓存的cache()方法,并且repair()方法中 本身调用了一次cache()方法,结果导致的问题是每次编辑,栏目缓存都会全部更新两次,当栏目比较多时,每次都重新生成一次缓存,效率自然会降低,但 一般这还不至于导致很明显的慢。更杯具的是,PHPCMS黄页模块的产品分类均存储在栏目表中,黄页意味着有大量的多级产品分类,这样一来,每次在编辑内 容模型的某个栏目时,整个栏目表都会跟随着更新两次缓存,几百个栏目的缓存重新更新,并且写入方式是file_put_contents,结果的杯具是, 编辑栏目后保存时一直卡在那里无论怎么点就是更新不动,关掉重新开,发现编辑的内容又是保存成功的。

落叶一直的解决办法是,修改PHPCMS编辑栏目后调用的缓存更新方法,只让他更新所涉及到的栏目的缓存。这样的好处是临时比较慢,不会花无用的时 间去更新大量不需要更新的栏目的缓存。缺点是会导致相关联的栏目缓存没有及时更新。不过,这个不是问题,等栏目全部修改完成后,再在后台点一次更新所有缓 存,这下慢就慢吧,点了不管,他自会更新完。

4.删除文章,静态页没有跟着删除。

一般的设计按理应该是删除文章的同时,对应删除的静态文件,但不知道为什么PHPCMS中没有这样,结果是很多文章已经删除了,但静态页还是被收录了,并且都是老的一些无用的测试页面或者模板列换前的页面。这时候想将这些的页面去删除只有人工去找了。

5.内容页模板无法批量更换的问题。

很多时候,程序上站设置好栏目等,设计美工处理模板界面,然后编辑同时发文章,然而因为模板还没有做出来,默认栏目设置中内容页模板都是选择的默认 show.html模板,发的文章的Template字段中记录的也是show.html模板,然后设计那边模板做出来后,如果不用默认的 show.html文件名,而是show_new.html模板时,本来应该可以直接栏目修改时,选择新模板,然后勾选“将这些修改全部应用到子栏目及内 容页”,实现内容页模板更换的。相信PHPCMS官方的本意也是如此的,可结果勾了也白勾,内容页模板原来是啥还是啥,这时候不得不手动一篇文章一篇去修 改,或者到数据库中替换。

分享到:

阅读此篇文章的网友还阅读了:

无相关信息

网友评论

热门网络安全