首页 > 经验 > 关键词 > Discuz!X2.5最新资讯 > 正文

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

2012-03-09 09:24 · 稿源:中国站长站

编者按: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()

网友热搜:

  • 相关推荐
  • 大家在看
  • Reddit禁止仇恨言论,删除2000个种族主义和暴力论坛

    Reddit周一在修订版禁止“煽动暴力或基于身份或脆弱性煽动仇恨”的群体或用户。它表示:“每个人都有权在没有骚扰、欺凌和暴力威胁的情况下使用Reddit。”

  • 微软正在收购CyberX以增强其Azure物联网安全性

    [TechWeb]微软已经宣布将以未公开的价格收购专注于工业的网络安全供应商CyberX,以增强其Azure IoT平台的安全功能。这次收购触及了两个关键的IIoT安全痛处的核心。虽然构建具有无缝安全管理所有必要功能的新物联网设备相对容易,但运行各种各样不同协议的旧设备(可能缺乏远程修补等重要功能)是一个更大的挑战。此外,物联网的部署方式过于频繁,意味着运营商无法完全了解在任何给定时间网络上连接和活动的内容,许多专家认为这?

  • 冈本称拼多多店铺无合法授权 无法保证所售商品安全性

    知名避孕套品牌@岡本中国官方微博 发布消息称,近来陆续接到消费者对电商平台上所售冈本安全套的真假问询,冈本中国统一回复:冈本中国官方授权的电商销售平台可在官方网站查询,为保障您的权益,请前往各电商平台旗舰店、授权专卖店及授权专营店购买冈本产品。

  • 丰田明年将免费开放汽车碰撞测试软件 提升汽车安全性

    6月17日消息,据国外媒体报道,丰田汽车(以下简称丰田)明年将免费开放汽车碰撞测试软件,以提升汽车安全性。丰田汽车丰田将于2021年1月起无偿公开可在电脑上解析汽车碰撞事故对人体造成的伤害的虚拟人体模型THUMS(Total Human Model for Safety)。外媒称,丰田将让企业集团等都能自由使用上述软件,带动提高汽车业界整体的安全技术水平。此外还意在加速完善面向自动驾驶实用化的环境。丰田与丰田中央研究所于2000?

  • “DiDi说泵”推广价格预估,靠谱的自媒体推广平台

    备注:本文数据来自站长之家移动传媒平台,文章涉及的数据依托平台大数据计算所得,非百度官方数据,仅供参考。DiDi说泵是当前百家号中的普通号,目前账号百家号权重为0,综合排名位列1049940名,社会分类排名位列139040名,领先了6.0%的百家号。 DiDi说泵百家号概况 DiDi说泵的简介为八年工业泵实战经验帮你水泵选型!,是一家主旨明确、领域专注的自媒体作者,截止目前为止他们已经在百家号上发布了超过0篇的游戏内容,最近该作?

  • AMD/Intel/NVIDIA竞争惨烈:供应链懵了

    AMD、Intel、NVIDIA,作为CPU/GPU芯片行业的三大上游巨头,一举一动都对整个产业有着巨大的影响,而现在,似乎整个产业链都被三家的产品发布节奏给整懵了。产业链人士认为,三家巨头的新品发布

  • LG Display已被韩国选定为可伸缩显示屏研发领导厂商

    6月12日消息,据国外媒体报道,LG旗下专注于面板事务的LG Display,已被韩国选定为可伸缩显示屏研发的领导厂商。LG Display被韩国选定为可伸缩显示屏研发的领导厂商的消息,是LG Display在官网宣布的。官网的信息显示,LG Display已被韩国产业通商资源部(MOTIE),选定为可伸缩显示屏研发这一国家项目的领导厂商。LG Display在官网上表示,他们会监督这一大型研发项目的进展,可伸缩显示屏研发项目,是韩国产业通商资源

  • RTX 3080系列显卡泄密严重 NVIDIA开始调查了

    虽然5月份的GTC 2020演讲中,NVIDIA已经正式发布了7nm工艺的安培GPU,但首发的A100是面向数据中心市场的,安培游戏卡的还是个谜。最近一周RTX 3000系列显卡的爆料很多,NVIDIA已经开始调查代工厂

  • 显示行业年度盛会——DIC EXPO显示展招展进入倒计时

    所有的成绩,都是实力的最好背书;所有品质,也需要用成绩来佐证。由权威协会中国光学光电子行业协会液晶分会CODA唯一主办 2020 中国(上海)国际显示技术及应用创新展(简称DIC EXPO显示展)凭借自身的专业、权威、高品质、高规格、大规模,成为全球显示行业年度盛会,自进入公众视野以来关注度始终居高不下,吸引了显示产业链上的企业争相加入,现展位即将售罄。作为疫后全球显示展会的先锋,DIC EXPO显示展将于 7 月22- 24 日上

  • AMD将改写10年来DIY市场历史:份额逼近30% 大厂全齐了

    AMD去年7月推出的7nm锐龙3000处理器一直卖的不错,下个月应该会推出改良版的锐龙3000XT系列处理器,有望再添一把火。AMD在DIY市场上稳步推进,有可能改写10年来的历史,市场份额逼近30%。根据

  • NVIDIA、奔驰重新定义自动驾驶:终生都可随时升级

    6月23日,NVIDIA、梅赛德斯-奔驰联合宣布,将共同打造革命性的车载计算系统、AI计算基础架构,成为奔驰所有下一代汽车的标准配置,并于2024年起在奔驰下代车型中率先实现可升级的自动驾驶功能。

  • Dior低调入驻天猫 开出官方唯一天猫旗舰店

    今天,奢侈品牌Dior低调入驻天猫,开出首家官方旗舰店。旗舰店首页上显示,诸多品牌即将在 7 月底盛大开幕。Dior 的明星产品 Miss Dior 香水系列、烈艳蓝金唇膏都在该店首屏推广之列。Dior 还强调了自身是 “官方唯一天猫旗舰店”和 “100% 的官方正品保证”。

  • 梅赛德斯(Mercedes)和英伟达(Nvidia)合作建立强大的计算平台

    [TechWeb]梅赛德斯·奔驰(Mercedes-Benz)与英伟达(Nvidia)合作开发用于汽车的下一代计算平台,该平台将支持从空中软件更新到自动驾驶的所有内容。这家德国汽车制造商表示计划从2024年开始在其车队中推广这项新技术。新平台将基于Nvidia的片上系统Orin技术,还将使用基于San Jose的公司完整的Drive AGX软件堆栈。Nvidia 于2019年12月在CES上首次展示了Orin ,除了顶级规格(例如每秒可以进行200万亿次运算,同时使用更少的功率

  • Dior近期低调入驻天猫店 店铺已有1.2万粉丝关注

    近期,Dior低调入驻天猫开店,旗下明星产品Miss Dior香水系列、烈艳蓝金唇膏均在该店首屏推广之列。同时,Dior还强调了自身是“官方唯一天猫旗舰店”和“100%的官方正品保证”。在没有做任何宣传的情况下,店铺已经有 12000 多位粉丝关注。

  • 想要享受黑科技带来的数字生活?来DIGIX数字生活实验室就对了

    再遇鹏城,探索超感知数字生活,6月18日-6月22日,华为DIGIX数字生活实验室来到了深圳卓悦中心,别具一格的潮酷黑科技给深圳市民带来了智慧生活的体验。DIGIX数字生活实验室内华为终端云服务各大应用的沉浸式体验专区可谓人气爆棚,花币卡、专属明信片、可爱抱枕等专属礼品也让参与体验者满载而归,夏日炎炎,快来有颜值、又潮酷的DIGIX数字生活实验室玩耍吧。DIGIX数字生活实验室现场在华为DIGIX数字生活实验室中,打卡体验之旅必

  • NVIDIA严查没用:RTX 3080偷跑更进一步

    围绕RTX 3080的爆料突然多了起来,据说NVIDIA已经开始严查泄密事件,富士康、比亚迪等装配厂都在列。不过,RTX 3080是否就是别致的双面对吹风扇造型,似乎还没定论,有消息称,NVIDIA中层经理

  • 抄袭起家却混得风生水起,扒一扒“美版贴吧”Reddit早期成长史

    从 2005 年上线至今,Reddit已经发展成全球最具影响力的社交平台之一。目前,这个平台月活用户已经达到4. 3 亿,平台拥有超过一百万个版块,覆盖范围非常广阔。

  • DIGIX数字生活实验室来袭,教你玩转华为会员中心

    近日,DIGIX数字生活实验室快闪店在深圳卓越中心开幕,在为期五天的活动里,华为会员中心专区为用户们展示了华为会员中心APP的系列玩法,为大家带来有趣的感官体验和满满的科技时尚感。本次活动中,华为会员中心活动区通过多感官交互体验,让大家了解了华为会员中心APP的各种功能,包括社区交流、权益领取、资讯浏览、活动参与等等;现场还设计了趣味小游戏,大家纷纷参与互和抽奖,获奖的用户可以在华为生活馆内兑换精美小礼品和花

  • 捷信四川团队启动ALDI2.0自助办单流程科技化获商户好评

    2019年,金融科技行业发生深刻变革,都在使用金融科技探索新的商机。未来,金融科技将实现健康化、规范化发展,开启新一轮的技术创新和应用实践。今年4月,捷信消费金融有限公司(以下简称“捷信”)在四川宜宾正式展开ALDI2.0模式的试点工作,让更多商户体验到了科技转型带给切实体验的便捷服务,捷信在助力合作中小微商户完美融入“线下+线上”新零售闭环之余,也为消费者在更多细分场景下享受优质消费信贷服务创造了新的路径。?

  • 印度唱片公司Saregama India宣布已与Facebook达成一项全球许可协议

    DoNews 6月3日消息(记者 程梦玲)北京时间3日消息,印度最大唱片公司之一Saregama India周三宣布,已与美国社交媒体巨头Facebook达成一项全球许可协议,将允许用户从其大量宝莱坞音乐目录中选择乐曲,用于他们的Facebook和Instagram帖子。受此消息推动,Saregama股价周三盘中一度暴涨20%,触及涨停。此项交易的财务条款未予透露。Saregama称,Facebook和Instagram用户现在可以在他们的帖子和“故事”中添加来自其超过10万首跨越25

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议

热文

  • 3 天
  • 7天