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后台自带的数据表修复功能还是很强大的。现在编辑在添加文章时发现数据表损坏,已经不找程序员了,直接自己在后台系统工具里点数据库修复搞定。


猜你喜欢
- 快速提升网站排名、流量献给站长们。一些旧的技巧仍然适用(比如,每天写出新内容),但一些已经不再适用(向搜索引擎提交已经不是必要步骤),我们这
- 一、什么是网站策划?网站策划直接决定网站能否成功。如果在网站建设之前没有经过整体策划,一般这样的网站很难达到预期的目标。网站策划是网站建设公
- 现在人们买食品都讲究绿色、没有添加任何化学添加剂的食物。那么对网站推广这块又何尝不是呢?网站推广不管是海外网站推广还是国内网站推广。最终的搜
- 随着国际互连网的发展,一些企业建立了自己的INTRANET,并通过专线与INTERNET连通。为了保证企业内部网的安全,防止非法入侵,需要使
- LuManager(LUM)是基于FreeBSD、Zijidelu、Debian、Centos、Ubuntu等Linux/Unix系统的网站
- 当我们在使用VMware虚拟机的时候,有时候想让虚拟机直接使用物理机的硬件,这个时候就需要配置直通,本文以FC为例进行讲解1.在Vcente
- 尊敬的QQ用户,经过持续努力,QQ2010 Beta版本即将与广大用户见面,在此,我们诚邀您报名参与QQ最新版本的优先体验。QQ2010 B
- 基本原理:① 客户端第一次访问应用程序时,会到数据库(RDBMS)中取出数据,返回给客户端;同时也将取出的数据保存到memcached中。②
- 前言 在现在这个网络越发便捷的社会,各种网络勒索病毒层出不穷,即使是Google浏览器也是在不断的更新版本修复漏洞。很多人认为只有Wind
- 在你购买一个托管计划后,你需要登陆到你的Account Manager来完成帐户设置。第一. 登陆你的Account Manager.第二.
- 学习linux FTP服务器搭建时,你可能会遇到各种问题,这里将介绍linux FTP服务器访问权限问题的解决方法,在这里拿出来和大家分享一
- 9月30日消息,据国外媒体报道,在过去一个财年中,微软CEO史蒂夫·鲍尔默(Steve Ballmer)的薪酬减少5.
- 随着互联网的发展,e-mail迅速成长成为主要的网络信息传递工具。面对大量要求能够快速,廉价,和高可信赖的e-mail需求,很多公司和个人都
- 9岁上中学,14岁以650分的高分考入电子科大,大学期间参加国际科学计算机组织程序设计大赛获银奖,17岁被百度以10万元起步年薪相中……电子
- 分布式文件系统分布式文件系统是Windows系统网络存储构架的核心技术之一,可以实现将网络上位于不同位置的文件挂接在统一命名空间之下。在管理
- #!/bin/bash#下载svnyum -y install subversion#阿里云oss资料wget -P /root https
- 在前面的Windows2003设置系列教程中,我们提及了使用eAccelerator加速PHP,在那篇文章中提供了PHP5.2.0到PHP5
- 视频分享网站们是时候好好思考什么才是真正有效的商业模式了——现金流永远都是最硬的道理,而不能仅仅盯在人气与流量上。三年前,当Google以1
- 前言不同版本的动态库可能会不兼容,如果程序在编译时指定动态库是某个低版本,运行是用的一个高版本,可能会导致无法运行。Linux上对动态库的命
- 域名跟着关键词的拼音选取在SEO优化当中,域名所占之优势不容客观。大家也是经常会看到在搜索引擎搜索框内输入关键词的拼音搜出的结果往往都是相应