您的位置:IT爆料网 > 互联网

解读Discuz! X2.5全新架构 承载能力更强

发布时间:2022-11-08 15:08:11  来源:互联网     背景:

编者按:Discuz! X2.5 RC版本已于上周发布,《站长》杂志首次连线Discuz! 开发人员,为站长详细解读Discuz! X2.5在系统架构、性能负载、功能组件、应用中心等方面的特色与改进。小编特别请到了Discuz! 开发组成员bilicen,由他为我们介绍开发人员倾注大量时间与精力进行代码重构的底层架构。

《站长》:bilicen你好!Discuz! X2.5在系统架构方面进行了哪些改进呢?

bilicen:我们主要进行了六个方面的改进,主要包括:

1、程序底层架构的改进;2、用户输入数据的处理;3、数据库DB层的改进;4、内存级缓存层的优化;5、多服务器分库分布式部署;6、主要性能瓶颈点的优化。经过这六个方面的改进,Discuz! X2.5的系统架构全新改造,承载能力更强了,并且支持各种第三方插件、模板的扩展,能适应论坛未来的发展需要。

《站长》:为什么要对系统架构进行如此大幅的改动呢?

Bilicen:站长的需求是无限的,而论坛功能是有限的,论坛系统架构的承载能力更加有限。为了满足更多站长需求,首先就要改变系统架构。之前的论坛版本更像是普通货轮,它承载的货物有限;而Discus! X2.5就像是诺亚方舟,它可承载多种多样的事物,表现在论坛层面就是新版支持站长需要的各种功能、插件与拓展。

《站长》:在系统架构的六个方面改进中,能否为我们选取一点着重介绍下?

Bilicen:这里我着重介绍下Discus! X2.5在底层架构方面的改进吧,也就是加固Discuz! X2.5方舟骨架。首先,我们要求PHP版本大于5.1,抛弃了对PHP4的支持;其次,我们大量使用了面向对象编程(OOP),使代码的重用性和维护性更高;再次,实现了程序运程过程中按需加载,减少一个进程中对非必要的文件的解析,按需加载主要是针对类文件;最后,为了实现程序的按需加载,对目录名、文件名和类名的要求如下:

类文件存在/source/class 目录中,类名和文件名相同,一个类一个文件,类名以下划线(_)分隔,第一个下划线之前部分为目录名,没有下划线的类名直接放/source/class/目录下。产品中个别特殊类由于历史原因无法实现自动加载,需手动处理 include或require。

《站长》:在底层架构的改进中,肯定会涉及一些核心文件的改造吧,那主要的改造思路是什么呢?

Bilicen:主要改造思路是采用新的底层架构接口,以及避免底层架构的臃肿。我们改造了class_core.php入口文件以及function_core.php 减肥之术等2个核心文件。关于这方面代码有兴趣的朋友可参考我提供的附件(附1)。

《站长》:在数据层隔离方面,你们主要做了哪些工作呢?

Bilicen:对数据层隔离,首先要对原DB类文件进行改进,同时系统的逻辑层不会出现直接操作数据库的SQL语句。举例来说:当你需要在Discuz! X2.5方舟上装载一批集装箱货时,你可以将它们全部放在甲板上,但不能把它们放在方舟的船舱、驾驶室等部位,以保障方舟的安全驾驶与稳定航行。

以代码编写为例,之前的代码是这样写的:

$rushresult = DB::fetch_first("SELECT * FROM ".DB::table('forum_threadrush')." WHERE tid='$_G[tid]'");

现在,在新的架构体系下,代码实现已经如下:

$rushresult = C::t('forum_threadrush')->fetch($_G['tid']);

可以看出,数据读写已经完全封装,在程序的业务逻辑层不会出现直接操作数据库的SQL语句。感兴趣的读者,也可以参考forum_viewthread.php 文件的编写代码对比。

《站长》:数据读写封装对站长有哪些好处呢?

Bilicen:好处是显而易见的,数据层隔离(附2)使得Discuz! X2.5系统更加安全、拓展性更强、负载能力更高,也为内存级缓存层增加和数据库分布式部署奠定了基础,第三方插件不必再跟随者系统架构的升级而升级。这就像文章开头所说的,从货轮升级为诺亚方舟,不仅更加稳定与安全,并且支持各种各样的功能插件,能满足更多站长多样化需求。

《站长》:谢谢Bilicen。下一期请为我们讲解下Discuz! 在分服务器部署方面的创新。

附1:关于class_core.php入口文件以及function_core.php 减肥之术:

Class_core.php是入口启动文件,主要实现了以下功能:

1、注册autoload方法和异常处理方法;

2、C::t方法的实现;

3、memory的初始化;

4、创建discuz_application实例(discuz_application是原来discuz! X2的discuz_core);

5、简写类的映射:

class C extends core {}

class DB extends discuz_database {}

function_core.php是系统的核心函数库文件,随着系统功能的丰富,函数库越来越大,慢慢地变成了系统快速启动的负担,为此我们将function_core中的函数按功能拆分到不同的类文件中,实现程序的按需加载;原有函数名保留不变,做相应类静态方法的映射,兼容产品和插件的用法。

具体做法是在source/class目录增加两个目录,helper和lib source/class/helper目录中的文件为函数的分类集合,类的静态方法,可直接使用不用实例化 source/class/lib目录中的文件为工具类的集合类文件,使用时需实例化。

附2:数据层隔离:

1、addslashes的处理

insert(),update(),delete()方法对传入其的数组形式的参数进行安全处理:intval或addslashes,字符串形式的参数将不处理,请注意;

2、新添加的方法

fetch_all($sql),order(), limit(),field()等方法,其中fetch_all方法以数组方式返回查询多条记录数据,且可以设置数据的KEY值使用某字段值;

3、增加SQL语句format的支持

例:查询10个用户uid大于100的用户数据,以uid为返回结果数组的key

$arr = DB::fetch_all(‘SELECT * FROM %t WHERE uid>%d LIMIT %d’, array(‘common_member’, ‘100’, ‘10’), ‘uid’);

支持的fomat有:

%t

DB::table()

%d

intval()

%s

Addslashes()

%n

id IN (1,2,3)

%f

sprintf(‘%F’, $var)

%i

直接使用不进行处理

4、返回值的处理

在非UNBUFFERED的情况下:

INSERT SQL语句返回insert_id()

UPDATE和DELETE SQL语句返回affected_rows()

感谢 张小湖的投稿


本文标题:解读Discuz! X2.5全新架构 承载能力更强 - 互联网
本文地址:www.itbaoliao.com/hlw/5085.html

返回网站首页

本文评论
IT行业人才竞争持续加剧,极客时间企业版课程强势赋能
新市场时代,各个行业的竞争都开始进入白热化状态,人才对于企业的重要性开始越发凸显起来,特别是......
日期:05-06
王思聪悬赏百万找狗 王可可真的走丢了?
前几天,王思聪扎心周鸿祎的事件还未完全过去,今天王思聪的爱犬就又闹出了另一场风波。有网友在微博上曝光了一张疑似王思聪的朋友圈截图,从图片来看,王思聪的爱犬@王可可是个碧池似乎丢了,王思聪悬赏百万找狗,并扬言如果爱犬被人弄死了,会挖地三尺找到他。...
日期:10-22
“越狱大神”引爆SyScan360 详解iOS7安全改进
9月24日,由360公司承办的国际顶级技术会议SyScan360在京召开,“越狱大神”StefanEsser(树人)作为嘉宾,发表名为《漫谈iOS6漏洞利用与iOS7安全改进》的主题演讲。在演讲过程中,StefanEsser详细介绍了posix_spawn()漏洞,以及如何将它转化为比信息泄漏更严重的安全漏洞,并介绍了iOS7系统中安全相关的改进...
日期:10-05
购物搜索帮5买荣获“最佳创新电商导购网站”
日前,第三方购物搜索社交平台“帮5买”(www.b5m.com)荣获2012年度最佳创新电商导购网站,由中科院《互联网周刊》、社科院信息化研究中心联合颁发,并在10月18日第四届长三角互联网经济论坛暨电子商务发展论坛...
日期:10-10
2.6限时免费APP:该给你的iPad装点什么
作者:汪鑫不越狱不花钱也能用正版!《每日限时免费APP》栏目为果粉们搜罗苹果App Store中每天推出的iphone、ipad限时免费应用及游戏。让你既不用花钱去买,也不用越狱破解就能用上功能强大的收费软件和正版游戏。温馨提示:限...
日期:10-20
华为首款5G折叠屏手机正式发布:HUAWEI Mate X售价约17498元
2月24日,华为在MWC 2019世界移动通信大会正式发布5G折叠屏手机——HUAWEI Mate X,成为华为2019年发布的首款5G手机。...
日期:10-15
降低网络安全风险 BSA丨软件联盟在行动
9月17日至23日,以“网络安全为人民,网络安全靠人民”的2018年国家网络安全宣传周博览会......
日期:09-26
第一视频《孔和尚有话说》开播周年赢百万用户追捧
"少林寺贷款1亿修缮被商业化似公厕""赖昌星逮捕其政治牺牲品言论纯属放屁""中华脊梁是有钱人的羊蝎子"、、、、、、、,这样犀利针砭时弊的评论来自每天在第一视频新闻网(www.v...
日期:10-21
盛大文学小说学院筹办 招聘“文学策划与创作”方向师资
消息称,盛大文学与上海视觉艺术学院共同筹办的小说学院已正式进入筹办阶段,近日,双方联合发布了公开招聘“文学策划与创作”方向师资的招聘启事。相关负责人表示,“此次招聘主要包括专业负责人、教师等,热爱了解网络...
日期:10-21
王者荣耀S11赛季开启时间 新赛季开启时间一览
4月19日消息,王者荣耀S11赛季开启时间,新赛季开启时间一览。王者荣耀抢先服近日已经更新,S11赛季马上就要到来了,那么王者荣耀S11赛季开启时间是什么时候呢?下面一起来看看吧。...
日期:10-17
第七批科创板名单 七家企业都是做什么的
截止今日零点,上交所受理科创板企业已达44家。4月3日受理通过的企业有七家。值得一提的是,4月3日受理的上海美迪西为第一家“研究和试验发展”行业的科创板申报企业。...
日期:10-17
“天河一号”超级计算机配置抢先披露
今天全国高性能计算学术会议在长沙召开,大会披露了登顶中国高性能计算机TOP100的“天河一号”超级计算机系统。这套系统采用了采用了混合异构的环境,主计算系统为Intel至强5500,采用了ATI的GPU,CPU和GPU数目分别为6144和5...
日期:10-25
国产玄幻动漫巨制《灵域》第五季热血开播 爱奇艺长番式运营释放IP活力
7月20日,爱奇艺经典自制玄幻动漫巨制《灵域》第五季热血归来,每周四8:00更新,爱奇艺VIP会员抢先看。从已经更新的第一集内容看,《灵域》第五季继续围绕秦烈一行在灵域大陆的斗争的展开,而秦烈的身世以及凌诗语的下落也将随着情节的发展浮出水...
日期:10-29
百度地图联手新浪乐居打造的房产地图上线
日前,全球最大中文搜索引擎百度旗下地图产品百度地图与新浪乐居携手打造的百度房产地图正式上线。这标志着百度地图API在房地产领域成功展开应用。...
日期:10-06
lol怪兽入侵强袭怎么打:怪兽入侵阵容/出装/打法S+攻略
lol怪兽入侵强袭怎么打:怪兽入侵阵容/出装/打法S+评分攻略,其中狂袭难度最难完成,对玩家的英雄操作和出装符文天赋等都是一大考验,AOE输出这个模式下非常重要,那么如何获得S级评价呢?...
日期:10-10
31省份新增本土确诊46例 江苏19例 无新增疑似病例
2月16日电,2月15日0—24时,31个省(自治区、直辖市)和新疆生产建设兵团报告新增确诊病例102例。其中境外输入病例56例(广东24例,上海13例,福建6例,山东3例,云南3例,湖南2例,广西2例,天津1例,辽宁1例,四川...
日期:10-20
诺基亚再发威 WP8新机Lumia 810亮相
诺基亚 Lumia 810概念图作者:雪花继Lumia 920和Lumia 820之后,今天诺基亚又联合美国运营商T-Mobile发布了一款WP8新机Lumia 810,当然我们可以把它看做是Lumia820的T-Mobile定制版本...
日期:11-08
6月优酷指数:台网联动创造新“传奇”
日前,《2012年6月优酷指数研究报告》正式发布。报告显示,本月优酷电视剧榜单中,都市情感剧占据半壁江山,共有5部进入榜单,宫廷剧和战争剧各有2部入围。此外,以往较少入榜的涉案剧也有1部跻身前十。优酷综艺频道本月播放量上涨明显,从榜单前十的...
日期:11-05
岳弢:花钱指南
至少在岳弢那里,巨额财富曾经带来空虚和孤独。现在,这个先后跟随过陈天桥和史玉柱的年轻富翁找到了花钱的正确方式:创业。他创建的O2O企业店店通开始引起关注。 口述|店店通创...
日期:11-08
可收发QQ离线消息 WP7版微信V1.2抢先试用
微信是腾讯推出的一项即时通讯类应用程序,从刚刚推出开始,微信就成为了众多用户智能移动设备上必装的应用。而随着一句“我们来了”,微信在 一个月之前(2012年1月14日)正式登录Windows Phone平台。而在几天之前,微信WP7版放出了它的V1.2测试版。今天,小编就带来这款应用的试用体验。...
日期:11-06