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

Tom*_*Tom 36 php performance filesize include

一个没有经验的PHP问题:

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

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

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

谢谢.

Pas*_*TIN 43

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

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

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


作为一个注释:在一般情况下,您将获得更多的时间/ CPU /资源来优化您的SQL查询,或者添加一些缓存机制,而不是考虑那种东西.

  • 即使使用APC,也可以考虑使用自定义的__autoload函数/ spl_autoload_register - 我只能在调用类的自定义MVC框架中包含模型文件,而不是包含所有模型文件 - 这节省了大约1ms的每个文件包含.因此,如果页面渲染是80毫秒,你可以节省20毫秒,通过仅包括你需要甚至APC(当有很多包括)时,你可能值得做.也只用了10分钟就实现了. (2认同)

Jam*_*ler 15

小心include_once()(也require_once()),运行起来比它贵include().每次include_once()运行时,PHP 都会在决定是否加载文件之前对已包含文件的内部索引进行查找.索引中包含的越多,此查找越慢.此外,当使用include()include_once()尝试使用绝对路径时,因为这比相对路径更快,因为您不是强迫PHP为您设计绝对路径.正如ggiroux所说,像APC这样的某种形式的缓存会获得巨额回报并让人担心有多少包括你无关紧要的电话(主要是)(除非你有一些写得不好的代码).

编辑 -

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