background image

PHP开发大型Web应用浅析

这里所说的“大型”应用不是说像Google、eBay、Yahoo这类大型网站的具体实施,我

也没有意图劝说读者放弃自己的概念和信仰,只是希望大家的系统可以运行得更快更流畅,
可以承载更多的用户在线,希望可以给PHP的初学者一点帮助。

关于PHP的执行效率,网上的专题文章很多,多以PHP、Java几个阵营的争论开始,以一

个不确定的期待结束,很少看见一个明确的结论。确实,程序的执行效率是很难从比较中得
出的。应用的方面不同,执行环境不同,效率的差别会差得比较大。而且效率也是需要权衡
的,大家都知道汇编语言很底层,可以写出非常高效的程序,但是我还很少,应该说是几乎
没看过有人用汇编做Web开发,而且有能力用汇编写出高效程序的人似乎都是值得大家仰视
的,哈哈~我们没有必要去讨论PHP和汇编到底差多少,只要知道自己的PHP和别人的PHP差
多少就可以了。

首先,先要明确这篇文章的前提:必须有一台或更多的可以被自己操纵的服务器,而不

是虚拟主机空间。毕竟可以在虚拟主机上运行的通用系统已经有了很多经典的作品和成熟的
框架,效率挖掘已经被前辈们做得非常出色了,它们的很多理念也被现在很多PHP用户继承
和发展,越来越多的所谓“框架”也像满天繁星一样,我也不想再去写那个,因为第一我自
己的水平也不怎么样,写不出什么新鲜玩意来,写出来也招人笑,第二是写这个的文章太多
了,说法也太多了,混乱是造成很多富有激情的未来天才程序员夭折的最大元凶。

在独立服务器上执行的程序和在虚拟主机上可以运行的程序在效率优化方面有着很大

差别。您当然可以把一套discuz不加修改地安装在一台甚至一堆独立服务器上,不过,它真
的得到最大的性能优化吗,您真的对得起这一堆服务器吗?

独立服务器指的是,使用者对这台机器有完全的控制权,包括安装、删除软件,配置系

统参数甚至修改源代码。基于这样一个开放的硬件平台,性能也不仅仅是体现在速度上,还
包括安全性、稳定性等。和虚拟主机不同,用户必须自己配置Web服务器参数,安装和配置
PHP、数据库,以及安装各种乱七八糟的东西(我喜欢这么说)

,当然还要对它们负责。

首先提出几个名词:执行时间、模板、数据库封装、Cache、Buffer、Hash、守护进程、

crontab。

执行时间,谁都知道,就是一个程序从执行开始到执行结束所用的时间。因为Web是瞬

时的、无状态的,所以执行时间是Web程序执行效率的一个指标,它并不适合衡量C/S程序或
者后台守护的程序,因为它们很多都是持续运行的。页面执行时间的一个典型例子就是
Discuz论坛页面最下方的时间显式,通常Discuz都是几毫秒到几十毫秒,和所用的平台、数
据量和当前系统压力有关。

模板大家再熟悉不过,虽然有很多人只是在用,但是不知道为什么在用。模板在传统上

来说是划分逻辑层的一种途径,在MVC上结构里,它把表示层和下层分离,在实际使用中,
它方便程序员和界面设计人员分工合作。然而,现在很多场合中,由于模板的不当使用,它