作为常见脚本启动序列的一部分,有多少'包含'太多了?或者没有这样的事情?

时间:2010-07-12 11:01:47

标签: php include

通过“通用脚本启动序列”,我的意思是在我网站的大多数页面中,第一项业务是咨询3个特定文件(通过include()),它们集中定义常量,许多脚本中使用的某些函数,以及一两个类,以及提供数据库凭据。我不知道这样的设置是否有更标准的术语。

我想知道的是,是否可能有太多这样的东西,结果会让事情变慢。我知道使用include()有一定的开销,因为它是在文件系统,解析和执行中寻找的另一个文件。如果有include太多这样的事情,我想知道我是否接近那一点。注:我的一些页面include()仍然是他们特别需要的更多脚本(例如,定义仅由几页使用的函数的脚本),并且我不计算这些偶尔的额外include s ,无论如何都使用得相当谨慎。我只担心大多数页面上出现的3 include并将所有内容都设置好。

3 include是什么?

其中两个在webroot之外。 common.php定义了一系列在开发和生产站点之间不同的函数,类和其他东西。 config.php定义了开发和生产站点中不同的常量和路径(连接到哪个数据库等)。当然,特别希望这个文件在webroot之外。 <{1}} config.php s include()位于底部。

另一个在webroot内部,包含一行:

common.php

开发站点和生产站点之间的目录不同。

(请随意质疑以这种方式设置include [path to appropriate directory]/config.php 背后的理由,但我觉得这确实为准备执行每个页面提供了一个好的,可靠的系统,我的问题是它是否是坏的在每个页面上有那么多includes s作为基线。)

4 个答案:

答案 0 :(得分:2)

使用APC,您的担忧就会消失。 opcode您的文件将缓存在内存中,一切都将超级快。 :) Facebook does this所以它肯定会帮助你扩展

因为您可能没有注意到1个包含或50个速度之间的差异,但对于具有高并发性的应用程序,I / O 可能是一个巨大的瓶颈 。所以关键不是速度,而是缩放。

答案 1 :(得分:1)

最好的办法是使用某种加速器,APC或eAccelerator或类似的东西来保存它们缓存在RAM中。这背后的原因很多,在繁忙的网站上,这意味着失败。

例如,一位朋友在他的网站上做了一个实验,每天大约有15k用户,平均页面加载时间为0.03s。他删除了他用作模板的大部分内容 - 平均加载时间降至0.01秒。然后他放了一个加速器 - 每页0.002秒。我希望这些数字说服你,如果你不使用某种加速器,必须尽可能少地在繁忙的网站上保留。

这是因为扫描目录,查找文件,打开文件,阅读文件等所需的高I / O.

因此,将包含保持在最低限度。研究您网站最重要的部分,并通过将所需部分移动到一般包含等来进行优化。

答案 2 :(得分:0)

我不相信性能与包含的内容有关,因为想到一个包含文件包含500行代码的情况,而在另一种情况下,你有50个包含文件,每个只包含一行代码。

答案 3 :(得分:0)

或者,如果您使用Windows作为操作系统,则可以使用WinCache http://php.net/manual/en/book.wincache.php