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