源码压缩包刚到手的时候,2.87M,作为一个WEB程序,这样的容量可算是够大的,解压缩后目录也达到了8.74M,不过当看到PW默认自带了多个风格以及有相对比较完整的IP库时(并没有使用常见的纯真IP库,而是象以前一样根据IP头分割的TXT文件),也就理解了目录如此庞大的原因。对于如今的网络速度而言,下载3M左右的源码也没有什么了。
试着安装了一下PW,发现安装界面与以往相比有了长足的改进,不过。这当然不是我最关心的问题,我最关心的还是程序的执行性能,或许每个站长在下载它的时候,性能都是最关注的。
安装程序在最后一步就为PW进行了初始化,这点与DZ不太一样,DZ是初次运行后自动刷新缓存的(或许因为是测试版的原因,缓存刷新可能不太成功,进行后台再次刷新缓存后就一切正常)。打开首页发现执行时间一直在0.02与0.03秒之间。
虽然这样很快,但毕竟我现在是初装,数据库里还没有任何数据,这个执行时间或许说明不了什么。为此专门写了一个循环,往数据库里插进了10万条数据,30万条回复,然后再做了一次测试。
打开前台时:
打开版块显示贴子列表时:
打开主题内容时:
我得事先申明,这里所有的贴子都是一个主题,三个回复的。代码也很简单,附在文章最后,可以请有兴趣的朋友自行测试。
看到上面的几个执行时间,完全可以看出PW在页面缓存方面还是做的挺不错的,因为环境不同有点片面,但总体来说,PW的响应速度还是可以的。
最后我尝试了一下打开一下网站后台,因为更新列表里有一些功能对我来说非常有用,所以对它们特别关注(当然,我更关注的是,为什么后台登录页面一直没变?难道是响应小平同志说的,一百年不变?开个玩笑):
改进帖子审核功能,帖子页面增加[审核]链接。
首页N格调用插件
论坛状态设置及默认首页设置
批量评分和批量合并
控制面版增加个人便签功能。
增强创始人功能,允许多重创始人。
以上列表是相对于以前版本或者DZ来说都是对我很有用很贴心的功能。
1、在多个知名的论坛被负面新闻报道以及新闻出版署等国家机构对媒体、论坛的内容越来越关注的时候,帖子的审核自然而然就变成了重点关注对象,PW也是国内php论坛第一个有帖子审核功能的论坛,但完全的后台批量审核让论坛管理员们不得不永远开启一个后台窗口在那里,管理员们得不停的切换论坛前台与后台窗口,影响了管理员与论坛用户的互动,同时在一些热门版块也无法体现出审核的“即时”和“及时”,如今有了贴子页面的审核,管理员可以直接在前台看完新贴后就直接进行审核,让论坛更加互动。
2、首页N格调用这个插件最近一向被各大站长所关注,毕竟在论坛首页就可以让用户清楚的知道最近的热贴、精华、热图等,可以增强对论坛用户的吸引力。
3、论坛状态与默认首页都与以往有了不同之处,在以前,论坛只有关闭和开放两种,定时开放这种只是很老的功能了,但一旦关闭了,除了QQ、MSN、邮箱和手机,我们怎么于论坛的其他元老们联系?内部开放这个功能却可以达到这个效果,指定那些最热心的用户或者元老们的ID,我们,仍然可以通过论坛他们保持着联络。默认首页只是与以往相比多了一个home首页的显示,可以使论坛看起来像一个CMS或者说把论坛最热的一面展示给了用户。
4、批量评分和批量合并则是简化了以前的很多操作,不至于再象以往那样一个个贴子处理过来,缩短了管理员的处理时间,节约了精力,可以把更多的时间用在论坛管理上。
5、后台的个人便签功能,就象一个小型留言板,如果管理员有多个,可以通过这个小窗口分配其他管理员要做的事情或者互相打招呼。当然更多的是当成ONENOTE一样的功能,来记录最近需要做的事情,以便下次登录的时候可以提醒自己还有什么事情未完成或者需要完成什么操作。
6、创始人这个概念不是PW最早提出来的,但是这个版本的PW是彻底加强了这个功能,虽然只是仅仅只是添加创始人,但总比DZ直接修改config文件要方便很多,而且也更直观。毕竟DZ修改config文件是输入用户ID,一旦输错且上传,可能会带来一些不必要的安全隐患。
更新列表中还有一些其他功能,如页面提高效率、增强加载速度、改善浏览体验、更新已经BUG等,这里也就不一一列举。
这些功能已经基本一个论坛的日常需求,那么,剩下的就是货比三家了。在国内虽然使用的PHP论坛很多,除PW外,还有PHPBB,VBB,DZ,Molyx等,但真正使用量很大的还是PW、DZ、Molyx,但不得不承认的,目前市场占有率前两名的还是PW和DZ,那么在看完功能后,就代码方面及数据库方面与DZ再进行一下对比。
仔细看过两个目录,发现两个程序的目录结构几乎一致,相信这也是这两款论坛程序在经历了这么多年的发展而不约而同的认为,这样的目录结构更利于面向过程的应用。两款程序都将语言包放在模版目录下,只是DZ仍然坚持着将admin的模版和前台应用模版分开放在admin目录下,而PW却依旧与样式风格的目录放在一起。
由于PW从最近几个版本开始有生成静态页面的功能,相比DZ而言则多了一个纯粹存放HTML页面的html_data目录,其他的就没有什么可比性了。PW将JS目录放在根目录下面,而DZ则放在了include目录下。但起到的效果是一样,其他还有类似的微小不同,不再一一列举。
和DZ在模版应用方面一直就是采取的两种不同的手段。PW更倾向于直接使用PHP的定界符来处理网页模版,而DZ从最初就是采用了自己写的template函数处理,两款程序都是坚持到现在一直没有更换过。虽然DZ的模版是编译型的,一次编译后,就不需要再进行处理,但毕竟这样还是没有直接的定界符处理的快。DZ模版相对于美工来说比较容易制作,而PW则在模版处理速度上更胜一筹,两款程序的侧重点不一样,孰优孰劣却是无法说清了。
由于两款程序都支持了支付功能,在这里不就功能的实现进行比较,只是简单的进行判断:DZ把这些附加的功能放在了API目录里、而PW直接放在根目录里,相对看起来比较凌乱;DZ的支付功能全部加密,二次开发的时候没有任何参考、PW则是完全开放,从文件中也可以得知是调用phpwind的网上接口。
同样值得说明的是PW与DZ都提供了faq定制功能,因为都存在了数据库里,却没有想着为FAQ提供相应的语言类型,既然程序支持多种语言的应用,为什么在帮助的时候却看不到语言类型呢?总不能让我在英文版的程序里,仍然使用着中文帮助吧?希望PW在下一版中可以提供类似的功能。
略微看了一下程序,发现PW以前最爱用的“短路”运算符(&&或||)几乎消失不见,而DZ却开始应用的多了,“短路”运算符可以明显的减少代码量,但却降低了代码的可读性,而且“短路”运算符也不是很常用,普通的二次开发人员可能在看到的时候会比较迷惘。
从6.0开始,在读取主题的时候,SQL中使用了GetTtable和GetPtable两个函数,直到看了这两个函数才明白,原来PW还有分表的功能,看来PW还是考虑了论坛数据量很大的时候,通过分表来缓解数据库的压力,仔细看了一下DZ,并没有提供类似的应用。而且PW对于发贴和回贴采用了三个数据表,这与DZ只使用两个表(主题表、内容表)有了很大的不同,也使得我一下子很不适应(刷数据测压力的时候,发现主题贴死活没有内容,编辑更新也没用),它采用了主题、主题内容、回复三个表来记录,表名分别为pw_threads、pw_tmsgs、pw_posts,彻底把主题内容从回复表里剔除出来,一是减轻回复表的压力,二来也相对比较容易管理,只是这样在读数据内容的时候,可能一次性会跨更多的表。
总体来说,这次PW的更新除了修复一些BUG和增强用户体验外,还是对整个程序进行了较大程度的改进,对于追求论坛访问的速度的PW来说,能够在既保持访问速度又增加新的功能体验,确实比较难得。