PHPCMS、织梦及帝国CMS对比(十二)之PHPCMS低级BUG问题分析
作者:落叶 来源:pmume.com 发布时间:2011-08-31 20:04:27
本文中落叶详细分析下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官方的本意也是如此的,可结果勾了也白勾,内容页模板原来是啥还是啥,这时候不得不手动一篇文章一篇去修改,或者到数据库中替换。
6.列表页GET标签调用文章列表,分页链接跳到后台的问题。
这个问题出现的大概原因是GET标签中的分页page参数,与列表页内置获取的分页参数产生冲突,生成静态时参数冲突,分页出错。而使用默认TAG标签时不会有错。
B、经常遇到的“见鬼”的问题:
1.无论怎么改模板,生成页面,始终不变的问题
这个是用户自己的问题,也是PHPCMS的问题。之所以说是用户自己的问题,那是因为他反复刷新的页面并不是真这的最新生成的改变后的静态页面。之所以说是PHPCMS的问题,那是因为在某些情况下,修改栏目后,栏目URL规则自动在不知情的情况下(修改栏目时,URL规则选项是以TAB选项卡的方式展示,修改其它选项卡下信息时,会难注意URL规则所在的选项卡中的变化而直接保存),变会到默认的URL规则,然后用户生成页面后,新页面生成在默认URL规则对应的栏目下,而用户并没有全站生成,点击栏目导航访问时还是旧页面,所以无论怎么刷新也不变的见鬼的问题。
这个问题当有意去编辑栏目进行测试时,难以复现,但是落叶之前一天多时,经常遇到,最近一些新的技术在处理PHPCMS是经常抓狂的仍然是这个问题。上传模板,生成静态,刷新刷新再刷新,就是不变。
另外,还有很多更新后发现不变化的情况均因PHPCMS的缓存所至,无论是编辑系统设置还是修必栏目后都需更新修复栏目数据,更新缓存才能生效,但不知道为什么,很多时候需要重新编辑好几遍,更新好几次后才能生效。
再就是URL更新了,更换URL规则后,数据库中记录的URL路径没有变,需要先更新URL后再生成静态才有效,但很多由于忘掉而无论怎么生成也没用的。
2.模板可视化情况下碎片无法点击添加或修改的问题
这个是程序员或者美工自己的问题,碎片变为可点击状态需要页面调用JQUERY框架,用户制作的模板如果没有加截这个框架或者相关页面没有加载这个框架,那就出现这个问题。
3.文章提交总是出现phpcms_search' is marked as crashed and should be repaired的问题。
这个问题就是phpcms_search数据表损坏了,落叶此前也是经常碰到了,现在编辑基本每隔一两天都会碰到这个表损坏而无法添加数据的问题。
这个表是为PHPCMS中实现全文搜索和全文索引而设计的,每添加一篇文章,文章全文内容都会经分词处理后,存储到这个表中,写入操作比较频繁,但是我不太清楚,为什么这个表会这么容易损坏,频繁出奇的高。当然见怪不怪时也就淡定了,因为PHPCMS后台自带的数据表修复功能还是很强大的。现在编辑在添加文章时发现数据表损坏,已经不找程序员了,直接自己在后台系统工具里点数据库修复搞定。
猜你喜欢
- 前不久,在研究SEO时发现一个好东东Dmoz(The Open Directory Project/ODP),是一个人工编辑管理的目录集合,
- 就在今天早上,微软收购yahoo案终于有了阶段性结果。尽管微软此前将报价提高到每股33美元,yahoo方面依然坚持每股37美元不让步。由于价
- 当Windows Server 2008 R2在2009年或者2010年发布的时候(这是目前预计的时间段),这个发布版本将有一些重要的功能。
- 如果要设置新建网站默认.NET版本,就在这里修改在确保你已经安装两个以上的.NET版本后如果看到ASP.NET选项卡的ASP.NET版本为灰
- Google的Matt Cutts确认了AdSense的Mediabot的确是会帮助Googlebot抓取网页的消息,但有部分人不相信Mat
- 有Godaddy主机用户问可以给Godaddy添加域名吗?那当然了,从某一个托管帐户托管多个域名是有可能的。Deluxe及Premium计划
- 最近听到很多站长都在说:“做完这个月就辞职,专心在家做站,争取的XX月内赚到多少多少”,同样的也会听到很多站长在说:“拿完google这个月
- 鉴于脚本程序可能带来的危险,WebMail系统完全有必要禁止html邮件中的脚本程序。禁止脚本程序的基本做法就是过滤掉html源程序中能够使
- 今天登录google adsense后台,发现Google的搜索广告多出了一项,从样式图片来看,很像百度以前推出的搜索框:文字描述中我们可以
- 本文为初学者介绍wine的使用。 下载wine 最新的wine(推荐下载) http://www.linux-easy.com/daily/
- SEO也不会起到更多的作用了,只有内容才是真正的霸道之物。搜索引擎优化技术人员必须遵循搜索引擎的规律和指导来进行搜索引擎优化操作,而不能不切
- 以恰当的方式推广你的网站当人们通过搜索引擎或者其它方式发现你的网站并链接它时,链向你网站的链接也会逐渐增加,Google会明白你很希望别人知
- 被认为是资本“避风港”的中国网络游戏市场在全球经济风暴中可谓大放异彩。日前,易观国际发布的《2009年第2季度中国网络游戏市场季度监测》显示
- 许多人在用IIS建设网站的过程中或多或少都会出现问题,在IIS6中有些是以前版本中就曾经出现过,IIS6中也有些是新发现的问题,本文在此对建
- 在日常操作中,我们经常要输入各种各样的密码,例如开机时要输入密码,QQ时也要先输入密码,假如你忘记了这些密码,就有可能用不了机器、打不开文件
- 一、安装POP3和SMTP服务组件Windows Server 2003默认情况下是没有安装POP3和SMTP服务组件的,因此我们要手工添加
- 新华网北京12月27日电一个名为“IE7攻击代码(Hack.Exploit.Script.JS.Agent.ic)”的恶意代码本周特别值得注
- Discuz!7.0是康盛创想(Comsenz)公司于2008年12月份发布的一款论坛BBS建站产品。在Discuz!7.0版本中,为了更加
- 你是否遭遇过这样的情况?当你在浏览器中输入正确的URL地址,但是打开的并不是你想要去的网站。它可能是114的查询页面,可能是一个广告页面,更
- 新娘们是不是会觉得自己拍出来的婚纱照总感觉哪里胖了。这么重要的幸福记忆变得不够完美。别着急小编教你用“美图秀秀&