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

2022-08-30 12:05:34

一个没有经验的PHP问题:

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

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

我想知道在这种情况下使用更大与更小的文件作为inclus()是否有任何性能影响?例如,200KB 文件和 20KB 文件之间是否存在任何性能差异?

谢谢。


答案 1

在200KB和20KB文件之间会有区别...但是你可能不会注意到它:一个200KB的文件不是那么大 - 当你构建一个大应用程序时,你通常会使用很多不“小”的文件。

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

  • PHP源代码被“编译”为“操作码” - 这完全等同于JAVA字节码
    • 默认情况下,每次包含 PHP 文件时都会执行此操作
    • 但是,使用一些操作码缓存(如APC),这些操作码可以保存在内存中,并且这种编译内容不再每次都完成 - 这很好:这将意味着更少的CPU使用,因为编译将不再完成(它只会偶尔完成一次)。
  • 操作码被执行
    • 根据脚本包含的内容,这可能需要一些时间,或者不需要:
    • 如果文件只包含函数或类定义,这不会花费太多时间:什么都不会执行。
    • 如果文件包含说明,则需要更多时间^^


作为 sidnote :在一般情况下,与考虑此类内容相比,优化 SQL 查询或添加一些缓存 mecanism 将获得更多的时间/CPU/资源。


答案 2

小心(并且还要),它比 运行成本更高。每次运行时,PHP 都会在决定是否加载文件之前,对已包含文件的内部索引进行查找。索引中包含的内容越多,此查找的速度就越慢。此外,在可能的情况下使用或尝试使用绝对路径时,因为这比相对路径快得多,因为您不会强制PHP为您计算绝对路径。正如ggiroux所说,像APC这样的某种形式的缓存将获得巨大的回报,并担心你有多少包含调用无关紧要(很大程度上)(除非你有一些写得很差的代码)。include_once()require_once()include()include_once()include()include_once()

编辑--

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


推荐