早该贴出来了...多亏版大提醒,嘿嘿-_-b
代码的效率瓶颈根本不在 PHP 上,对于一个站点来说,最耗系统资源的部分是在
文件 I/O 上,而这个方面水木的代码处理得非常好。关于水木系统的优化方面我
主要谈谈下面几点:
1. telnet 方式是不能做数据 cache 的,所有的数据都必须从系统获得,并且 telnet
方式下灌水非常容易,导致文件 I/O 负担非常严重,所以水木能承担超过 7k 的
telnet 用户并保持流畅的速度,证明水木的代码在处理 I/O 上非常优秀。
2. 水木的 www 模块虽然是 PHP 写的,但却不是纯 PHP 写的,如果是纯 PHP 写的,
执行速度上可能会有所损失。水木的 www 模块其实是用 php 函数包装了一下
C 语言写的函数库,而这个函数库就是 telnet 所用的函数库,因此保证了水木的
www 代码在 I/O 处理上是非常高效的。打个比方,如果说用 C 写的程序执行速度
是 100 分,那么水木的 PHP 可以达到 95 分以上,剩下的不到 5 分可以通过
安装 ZendOptimizor 来获得,最终得分可以达到 99 分以上。
3. 通常来说,一个大站要有自己的特色,因此会有少量的开发工作。PHP 可以说是
众所周知的简单语言,可以非常容易的找到一大批既懂美工又懂 PHP 的开发人员,
使自己的定制开发和页面美化工作极大降低。对于一个大站来说,这些工作才是
需要重点考虑,因为这些工作是得靠自己来做的,不可能让编写 BBS 代码的人来
给你做。
4. 一个站点的在线用户在超过 3k 之后,就应该考虑增加一台 squid 服务器来为 www
做 cache,这样可以大大减小 bbs 主站的负担。这个时候,不管 bbs 主站用什么语言
编写的都已经不再重要,因为语言执行速度带来的一点点提高与 squid cache 带来
速度提高根本不是一个数量级的。公网上那些比较知名的大 web 论坛,比如西祠,
他们还用 ASP 写的呢,速度比 PHP 还要慢一些,但他们也能支持很多在线用户,
除了机器配置相对较好的原因之外,大量采用 squid cache 服务也是重要原因。至
于三大门户网站,如果没有 squid cache 在撑着,他们的主站根本顶不住。
5. 如果在线用户在 3k 以下,无需考虑增加 squid 服务,因为在线用户少,语言执行
速度所带来的一点点提高根本体现不出来。
6. 水木的维护组一向重视系统的整体执行效率问题,在 www 访问上采用 squid cache
的方式在教育网 BBS 里面是首创,当然后来一些兄弟站点也学习了这种方法,取得
了很好的效果。在最初开发水木 www 模块时,采用 C 语言还是采用 PHP 包装 C 函
数的问题上曾经有过争论,但最后大家取得了共识,认为整体执行效率带来的好处比
单纯从 C 语言获得的一点点速度好处要大,于是选择了 PHP 包装 C 函数的办法。
--
修改:newer FROM 166.111.172.*
FROM 166.111.172.*