PHP include():文件大小&;演出

PHP include():文件大小&;演出,php,include,performance,filesize,Php,Include,Performance,Filesize,一个没有经验的PHP问题: 我有一个PHP脚本文件,我需要在不同的页面、不同的地方多次包含它 我可以选择将包含的文件分解为几个较小的文件,并根据需要包含这些文件。。。或我可以把它们放在一个PHP文件中 我想知道在这种情况下,对include()使用较大的文件和较小的文件是否会对性能产生影响?例如,200KB文件和20KB文件之间是否存在性能差异 谢谢。肯定会有影响,所以一定要使用include_once()而不是include()。你可以考虑使用包含缓存的APC。 在200 KB和20KB文件之

一个没有经验的PHP问题:

我有一个PHP脚本文件,我需要在不同的页面、不同的地方多次包含它

我可以选择将包含的文件分解为几个较小的文件,并根据需要包含这些文件。。。或我可以把它们放在一个PHP文件中

我想知道在这种情况下,对include()使用较大的文件和较小的文件是否会对性能产生影响?例如,200KB文件和20KB文件之间是否存在性能差异


谢谢。

肯定会有影响,所以一定要使用include_once()而不是include()。你可以考虑使用包含缓存的APC。

在200 KB和20KB文件之间会有不同…但您可能不会注意到这一点:200KB的文件并没有那么大——在构建大型应用程序时,您通常会使用很多不“小”的文件

加载
.php
文件时,有两件事需要时间:

  • PHP源代码被“编译”为“操作码”——这相当于JAVA字节码
    • 默认情况下,每次包含PHP文件时都会执行此操作
    • 但是,使用一些操作码缓存,比如,这些操作码可以保存在内存中,而且每次编译都不会再进行了——这很好:这将意味着使用更少的CPU,因为编译将不再进行(偶尔只进行一次)
  • 执行操作码
    • 根据脚本包含的内容,这可能需要一些时间,也可能不需要:
    • 如果文件只包含函数或类定义,这不会花费太多时间:不会执行任何操作
    • 如果文件包含说明,则需要更多时间^^


作为提示:在一般情况下,优化SQL查询或添加一些缓存机制比考虑这类事情会获得更多的时间/cpu/资源。

小心
包含一次()
(以及
要求一次()
),运行它比
包含一次()
要昂贵。每次运行
include\u once()
时,PHP都会对已经包含的文件的内部索引进行查找,然后再决定是否加载该文件。索引中包含的内容越多,查找速度越慢。 另外,在使用
include()
include_once()
时,尽可能使用绝对路径,因为这比相对路径快得多,因为您没有强迫PHP为您计算绝对路径。 正如ggiroux所说,某些形式的缓存(如APC)将获得巨大的回报,并使您担心有多少include调用与您无关(很大程度上)(除非您编写了一些糟糕的代码)

编辑--


担心上述调用只是一个问题,一旦你开始在你的代码库中有几千个
requires
includes

ggiroux。。。谢谢缓存文件时会发生什么情况?除非这是一个非常愚蠢的问题。如果缓存了它,我会说影响非常小,因为它将存储在共享内存中的预编译字节码中。include_once()而不是include()?请详述这一点;使用include_一次当然不会提高速度,原因已经在本线程中提到了。感谢您的补充解释。即使使用APC,考虑使用自定义的AyAutoLoad函数/SpRulAutoLoad寄存器-i只能够在自定义MVC框架中包含模型文件,其中调用类,而不是覆盖所有模型文件(包括每文件保存约1ms)。因此,如果页面呈现时间为80毫秒,并且即使使用APC(当有许多包含时),也只包含所需内容,从而可以节省20毫秒的时间,那么这样做可能是值得的。在网络上,每100毫秒计算一次。你不需要成千上万的include就能从中受益。你对这篇奇怪的帖子怎么看:它声称include_once()实际上比include()快?