2012-05-27 71 views
8

可能重复:
Efficiency for including files of functions (in PHP)
Using too much include() in php在PHP中包含太多文件是否会降低性能?

如果是这样,这将是文件的推荐量,包括最多?

+3

包含一百万个文件会降低性能。你应该问自己的问题是截止点的位置 - 加载一些“大型”文件,其中包含大量不会被使用的代码,或者许多代码将被使用的较小文件。要告诉的唯一方法是在您的特定设置上运行基准测试。没有规定说截断是在“Y行文件中的X行代码”处。 –

+0

这是一个多么长的问题,因为它取决于你有多少用户,你当前服务器上的负载,你的Web服务器配置是什么,你是否有一个PHP加速器(等等)。我的观点是建立在你的项目上,只要你喜欢,或者尽可能少,然后在你真正需要的时候担心优化。 (也就是说,我的symfony项目在每个请求中可能包含50-100个文件,所以如果你的服务器配置合适,你可以有很多并且仍然有很好的性能)。 – halfer

+0

@MarcB,成千上万会降低性能,不需要获得接近一百万的任何地方。 – Pacerier

回答

0

包括指令会将包含文件的内容“贴”到它所在的相同位置。所以包含的代码加起来就是实际的脚本。 下面是一个很好的解释PHP include(): File size & performance - 接受的答案。

17

包括文件将做以下事情:

  • 从磁盘中读取文件。
  • 在文件中运行代码。

这两个操作都需要时间。没有多少时间,但即使如此,如果您有很多包含内容,也可以加起来,所以您的问题的基本答案是'是的,它会影响性能'。

但是,该性能命中的规模相当小,远远超过编写高质量结构良好的代码(其中包括将单独的类/功能保存在单独的文件中)的优势。

事实上,如果您担心这些事情的表现,请尝试通过诸如xDebug的分析器来运行您的代码。这会向您显示代码的哪些部分花费的时间最多。 include()报表将显示在那里,但不太可能位于列表顶部的任何位置。

除非你正在编写一个像Facebook这样的访问者号码的网站,否则你不需要担心include()的表现。但是看一下xDebug的profiler输出,因为代码中可能会有其他的东西比预期慢得多,或者经常被调用,或者循环次数太多等等,并修复这些将有一个影响你的代码的性能。

+0

你打电话“从磁盘读取文件”没多少时间?那么为什么加速器达到超过x10的速度? – Pacerier

+2

@Pacerier - 取决于你指的是什么加速器?如果你的意思是Opcache和APC,那么他们做的不仅仅是缓存文件加载;他们还缓存编译步骤,这是真正的性能提升的源泉。如果你真的想看看通过减少包含获得哪种性能提升,请看Phar机制:Phar文件是PHP包;有效地将一个程序的所有文件合并为一个文件,从而使分发更容易。有一个性能好处,但不是那么多;它主要是为了便于分配而完成的。 – Spudley

相关问题