【问题标题】:Does including too many files in PHP reduce performance? [duplicate]在 PHP 中包含太多文件会降低性能吗? [复制]
【发布时间】:2012-06-02 05:33:55
【问题描述】:

可能重复:
Efficiency for including files of functions (in PHP)
Using too much include() in php

如果是,建议最多包含多少文件?

【问题讨论】:

  • 包含一百万个文件会降低性能。您应该问自己的问题是截止点在哪里 - 加载一些带有大量不会使用的代码的“大”文件,或者加载许多将使用代码的较小文件。唯一的判断方法是在您的特定设置上运行基准测试。没有规定说截止是在“Y 文件中的 X 行代码”。
  • 这是一个多长的字符串问题,因为它取决于您拥有多少用户、当前服务器上的负载、您的 Web 服务器配置是什么,您是否有 PHP 加速器(等)。我的观点是用尽可能多或尽可能少的项目来构建你的项目,然后在你真正需要的时候担心优化。 (也就是说,我的 symfony 项目在每个请求期间可能包含 50-100 个文件,因此您可以拥有很多文件并且仍然具有良好的性能 - 如果您的服务器配置适当)。
  • @MarcB,数千会降低性能,不需要接近一百万。

标签: php include


【解决方案1】:

包含一个文件会做以下事情:

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

这两项操作都需要时间。时间不多,但即便如此,如果您有很多包含,它也可以加起来,所以您问题的基本答案是“是的,它会影响性能”。

但是,这种性能损失的规模非常小,并且远远超过了编写高质量结构良好的代码(包括将单独的类/功能保存在单独的文件中)的优势。

说实话,如果您担心这类事情的性能,请尝试通过诸如xDebug 之类的分析器运行您的代码。这将准确地向您显示代码的哪些部分花费的时间最多。 include() 语句将显示在其中,但不太可能出现在列表顶部附近。

除非您正在编写像 Facebook 这样的具有访问者数量的网站,否则您不太可能需要担心 include() 的性能。但是请看一下 xDebug 的分析器输出,因为您的代码中可能有其他事情比您预期的要慢得多,或者经常被调用,或者循环太多次等等,并修复这些将对代码的性能产生很大的影响。

【讨论】:

  • 你调用“从磁盘读取文件”的时间不多吗?那为什么加速器能达到 10 倍以上的速度呢?
  • @Pacerier - 取决于你指的是什么加速器?如果您指的是 Opcache 和 APC 之类的东西,那么它们所做的不仅仅是缓存文件加载;他们还缓存编译步骤,这是真正提高性能的地方。如果你真的想看看通过减少包含获得什么样的性能提升,请查看 Phar 机制: Phar 文件是 PHP 包;有效地将程序的所有文件合并到一个文件中,以使分发更容易。有一个性能优势,但不是那么多;这样做主要是为了便于分发。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-10-29
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2011-03-29
    相关资源
    最近更新 更多