一个经验不足的 PHP 问题:
我有一个 PHP 脚本文件,需要在很多地方的很多页面中包含它。
我有两个选择:将被包含的文件拆分成几个较小的文件并根据需要引用它们……或者……将所有内容都放在一个单独的 PHP 文件中。
我想知道在这种情况下,使用较大还是较小的文件对 include() 的性能是否有影响?例如,200KB 文件和 20KB 文件之间是否存在任何性能差异?
谢谢。
一个经验不足的 PHP 问题:
我有一个 PHP 脚本文件,需要在很多地方的很多页面中包含它。
我有两个选择:将被包含的文件拆分成几个较小的文件并根据需要引用它们……或者……将所有内容都放在一个单独的 PHP 文件中。
我想知道在这种情况下,使用较大还是较小的文件对 include() 的性能是否有影响?例如,200KB 文件和 20KB 文件之间是否存在任何性能差异?
谢谢。
一个200KB和一个20KB的文件会有区别...但你很可能不会注意到: 200KB的文件并不是很大,而且在构建一个大型应用程序时,通常使用大量不是“小”的文件。
当你加载一个.php
文件时,有两件事情需要时间:
顺便说一句:在一般情况下,优化SQL查询或添加一些缓存机制比考虑这种事情更能节省时间/CPU/资源。
include_once()
(还有require_once()
),它的运行成本比include()
更高。每次运行include_once()
时,PHP都会针对已包含文件的内部索引进行查找,然后决定是否加载该文件。索引中的包含文件越多,这种查找就越慢。
此外,在可能的情况下使用绝对路径来使用include()
或include_once()
,因为这比相对路径要快得多,因为您不需要强制PHP为您计算绝对路径。
正如ggiroux所说,一些缓存技术,如APC将带来巨大的回报,并使担心您有多少include调用变得无关紧要(在很大程度上)(除非您有一些编写不良的代码)。requires
或includes
时,才需要担心上述调用的问题。这肯定会产生影响,所以一定要使用include_once()而不是include()。您可以考虑使用具有包含缓存的APC。