PHP include():文件大小和性能
一个没有经验的PHP问题:
我有一个PHP脚本文件,我需要很多地方在不同的页面上包含很多次。
我可以select将包含的文件分成几个较小的文件,并根据需要包含这些文件…或者…我可以将它们全部保存在一个PHP文件中。
我想知道是否有任何性能影响在这种情况下使用一个较大的较小的文件的include()? 例如,200KB文件和20KB文件之间是否有任何性能差异?
谢谢。
200KB和20KB文件之间会有区别…但是你可能不会注意到:一个200KB的文件并不是那么大 – 而且你通常会使用很多不是“小”的文件正在构build一个大的应用程序。
当您加载.php
文件时,有两件事需要花费时间:
- PHP源代码被“编译”为“操作码” – 这相当于JAVA字节码
- 每次包含PHP文件时都会执行此操作
- 但是,使用一些像APC这样的操作码caching,这些操作码可以保存在内存中,而且这个编译的东西不会每次都完成 – 这太好了:这意味着使用的CPU会更less,因为编译将不再执行只会在一段时间内完成) 。
- 操作码被执行
- 根据你的脚本包含的内容,这可能需要一些时间,或不需要:
- 如果文件只包含函数或类的定义,这将不会花费太多时间:什么都不会被执行。
- 如果文件包含说明,则需要更多时间^^
作为一个备忘录:在一般情况下,你会获得更多的时间/ CPU /资源优化你的SQL查询,或添加一些cachingmecanism,比思考这样的东西。
要小心include_once()
(还有require_once()
),运行比include()
更为昂贵。 每次运行include_once()
,PHP都会在确定是否加载文件之前,对已经包含的文件的内部索引进行查找。 索引中包含的越多,查找速度就越慢。 另外,当使用include()
或include_once()
尽可能使用绝对path,因为这比相对path快得多,因为你不会强制PHP为你制定绝对path。 正如ggiroux所说,像APC这样的某种forms的caching将会获得大量的回报,并且担心有多less个包含你无关的请求(主要是)(除非你有一些写得不好的代码)。
编辑 –
担心上述调用只是一个问题,一旦你开始有几千个requires
或includes
在您的代码库。
肯定会有影响,所以一定要使用include_once()而不是include()。 你可以考虑使用具有包含caching的APC。