首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > PowerDesigner >

Discuz 7.2坑爹汇总-PHP篇 -update 20120525

2012-07-25 
Discuz 7.2坑爹集锦-PHP篇 -update 20120525Discuz 7.2坑爹集锦-PHP篇ucc代表uc_client目录ucs代表uc_serv

Discuz 7.2坑爹集锦-PHP篇 -update 20120525

Discuz 7.2坑爹集锦-PHP篇

ucc代表uc_client目录
ucs代表uc_server目录


类型:??? ??? 代码风格
坑爹指数: ??? ☆
点评:??? ??? DZ代码不错,不过其代码风格对于维护来说比较痛苦。
本来应该尽量避免在判断中赋值表达式避免习惯之后本意的逻辑比较操作误写成赋值操作符而加大debug困难,而DZ恰恰相反不喜欢使用中间变量往往是变量赋值表达式直接用于IF判断。估计康盛幸福的程序猿用的都是宽屏显示器,所以他们相当吝啬换行,人类已经已经阻止不了一条语句可以超出19寸16:9宽屏液晶许多许多犹如黄河泛滥一发不可收拾直达长江入海口~
对于小括号使用不严格,IF/ELSEIF/WHILE/FOREACH后面紧接小括号而没有加空格,虽然毫不影响执行结果,但对于非函数调用还是在关键字和括号之间留个空吧。

-------------------------------------------------

类型:??? ??? 表情符号
坑爹指数:??? ☆
代码:??? ??? http://yourdomain/faq.php?action=faq&id=5&messageid=32
点评:??? ??? cry的表情符号代码 :\'(,正确应该是 :'( ,建表SQL插入数据时代码有问题。


----------------------------------------------------

类型:??? ??? 代码风格
坑爹指数:??? ☆
代码:??? ??? include/global.func.php ~400

?

点评:??? ??? PHP弱类型语言,变量不预声明即可使用,方便。但对未定义变量进行操作时会导致PHP抛出一个Notice,这在PHP中不算啥错误,但会给DZ调试带来一些意想不到的问题:DZ采用XML作为ajax交流格式,不知道是js代码编写问题还是XML本身问题,如果php.ini中打开display_error开关,当前台页面调用ajax操作遇上PHP抛出日志信息时前台将会出错,firebug中往往不是提示XML错误而是显示common.js某行错误(比如 Error:s is NULL, $ is not exists之类的)。不熟悉的还以为是JS代码有问题,其实根源在于PHP代码不严谨,而XML格式复杂严格。个人觉得网站ajax使用JSON比XML更佳,无论是后台程序处理输出代码还是前台JS解析数据。对于PHP数组,一条echo json_encode($array)即可快捷返回JSON格式信息给前台;而前台JS一条eval "{data}"命令即可立刻解析成JS变量对象(处于安全考虑,现在不推荐使用eval来解析,如果使用jQuery那么可以使用$.ajax()的dataType:json或者直接$.getJSON()来直接获得数组变量)。


FIX:??? 关闭php.ini中display_error选项。或者修改DZ代码使用isset()或者!empty()判断变量,比如

?

点评:??? ??? first='1'只设置了一次,如果分割主题时选择包含了1楼那么原主题内变成1楼的帖子的first依然为0. 本来在不支持事务的MyISAM引擎上做分隔主题这种操作就具有一定危险性,不过DZ更直接增加了这个这个机率。提醒你分割主题时不要把顶楼分割出去哟,不然剩下变成1楼的帖子将会成为孤儿。多来几次你就会明确记住这个准则了,也不会因为数据库偶尔非原子性操作带来的随机故障而烦恼。这多么简单啊。呵呵
FIX:??? ??? line327

?

点评:??? ??? 如果查询结果空$forum将会false,不做判断而直接赋值给$tid会出错,否则就可能要继续执行到后继的viewthreads.php中的判断,浪费系统资源。另外viewthreads.php 也未对$tid判断即以此为条件直接查询,徒增DB负担(MySQL会有 ‘Impossible WHERE noticed after reading const tables’ )
FIX:??? ??? 应该查询结束后立即对$forum做判断并设置一个变量作标志再考虑给$tid赋值然后在当前页面最底部判断,如果标志真则立即输出404头直接退出。

-------------------------------------------------


类型:??? ??? 未知
坑爹指数:??? ★★★★
代码:??? ??? uc_client/model/note.php=64

?


点评:??? ??? 老眼昏花括弧没包好哟
FIX:

?





本来计划单独开一PHP优化篇。后来发现下面坑爹代码多数会影响性能(PHP以及数据库执行),修复了bug即优化。故合并为一篇。

补充个优化PHP的:
如果你的服务器http server支持Gzip/deflate压缩,那么就使用http serer提供的功能,并到后台,全局-优化设置-服务器优化把“页面 Gzip 压缩”选项设定为否。
如果设定“是”,那么将使用DZ提供的一个gzip PHP插件来实现压缩页面。缺点是耗费PHP脚本执行时间,对于nginx+php-fpm模式运行更容易出现502错误。

?

?


版权曾经拥有,欢迎网上分享

转载请保留链接? http://waiting.iteye.com/blog/1343665

?

?

热点排行