Wordpress、Joomla、vBulletin等大型PHP应用程序是如何运行得如此之快的?


How do large PHP applications like Wordpress, Joomla, vBulletin run so fast?

仔细想想,我提到的所有应用程序都有数万行,有些甚至数十万行。然而,尽管每个请求都必须通过PHP解释器运行大量代码,但它们似乎占用的空间相当小。

为什么?

如果你仔细想想,我提到的所有应用程序都是10千行方,有的十几万。

实际上是相当小的。有些项目有数百万,甚至数千万行代码。

然而,他们似乎有一个相当轻的足迹,尽管巨大必须通过PHP解释器运行的代码量和每个请求。

通常代码只解析一次,结果字节码存储在缓存中(例如Xcahe, APC)。因此,所有这些行不必对每个请求都进行解释。

而且,并非所有的代码都需要在每个请求中执行。

通常,web应用程序响应的大部分时间是数据库访问和数据传输(要么从数据库到PHP,要么从PHP通过web服务器到您的应用程序)。

重要的不是数量,而是质量。我可以阅读四行代码,这将花费比Wordpress页面更多的时间来执行。

这都是关于好的优化

然而,您列出的这些应用程序并不轻RAM &CPU使用

简短的回答是,与其他技术相比,它们并不快,但与人类的速度相比:当然,它们很快。

另外需要考虑的是PHP解释器并没有为每个请求遍历Wordpress目录中的所有代码。Apache将从一个PHP页面开始,然后根据需要拉入其他页面。然后,所有这些页面都会被动态地解释,直到程序得到所需的结果为止,因此有时页面上的大部分代码没有被利用,从而使占用空间更小。

同样,取决于你实际运行PHP的方式也会有很大的不同。如果你是在CGI模式下,每个请求都会启动一个PHP解释器实例,而PHP作为一个Apache模块已经将其预加载到内存中,所以它不需要预先加载。

我个人并不觉得它们跑得快。在大多数wordpress网站上,渲染一个页面几乎需要半秒的时间,然而其中许多网站的服务器上的CPU每秒可以计算数十亿个周期。

这并不是说PHP本身就那么慢。我的应用程序(构建在框架上)通常运行在50ms左右,只使用3MB的RAM(其中只有600kb来自我的代码)。