代码之家  ›  专栏  ›  技术社区  ›  Tom

php include():文件大小和性能

  •  36
  • Tom  · 技术社区  · 15 年前

    一个缺乏经验的PHP问题:

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

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

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

    谢谢您。

    3 回复  |  直到 12 年前
        1
  •  43
  •   Pascal MARTIN    15 年前

    200kb和20kb文件之间会有区别…但是您可能不会注意到:200kb的文件并没有那么大——当您构建一个大的应用程序时,通常会使用许多不“小”的文件。

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

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


    注意:在一般情况下,优化SQL查询或添加一些缓存机制所获得的时间/cpu/resources要比考虑这类事情多得多。

        2
  •  16
  •   James Butler    12 年前

    当心 include_once() (还有) require_once() )跑起来比 include() . 每一次 包含() 在运行时,在决定是否加载文件之前,PHP会对已包含文件的内部索引进行查找。索引中包含的内容越多,查找速度越慢。 也当使用时 包括() 包含() 尽量使用绝对路径,因为这比相对路径要快得多,因为您不会强迫PHP为您计算绝对路径。 正如Ggiroux所说,某种形式的缓存(如apc)将获得巨大的回报,并且会让人担心有多少包含调用与您无关(很大程度上)(除非您有一些写得不好的代码)。

    编辑——

    一旦你开始有几千个电话,担心上面的电话就成了问题。 requires includes 在代码库中。

        3
  •  1
  •   ggiroux    15 年前

    当然会有影响,所以一定要使用include_once()而不是include()。您可以考虑使用具有include缓存的APC。

    推荐文章