【问题标题】:PHP performance hampered by require()PHP 性能受 require() 的影响
【发布时间】:2010-11-10 00:48:27
【问题描述】:

我通过 xdebug profiler 运行我的代码,发现超过 30% 的时间花在了 require() 调用上。改善这一点的最佳方法是什么?我看到了一些关于使用 __autoload 的帖子,但是关于它对 APC(我们使用的)的影响存在相互矛盾的陈述,并且对它用于提高性能表示怀疑。

【问题讨论】:

  • 你试过 include() 代替吗?
  • 不 require() 只是 include() 的硬失败版本吗?
  • 理论上是的。我想知道它是否会产生巨大的影响,因此评论中的问题而不是答案:)

标签: php performance


【解决方案1】:

APC 和自动加载曾经有过一些问题。那是很久以前的事了。一般来说,APC 可以加速你的require 语句,因为它会缓存已解析的文件。默认情况下,APC 仍将stat 文件以查看它在磁盘上是否已更改。您可以通过使用绝对路径并关闭apc.stat 设置来防止这种情况。请注意,这意味着您必须重新启动服务器才能清除缓存。

【讨论】:

    【解决方案2】:

    您可以通过使用 PHP 编译器来提高代码的速度,例如 http://eaccelerator.net/

    这样的编译器使一切工作更快,包括文件。

    【讨论】:

      【解决方案3】:

      确保您的包含使用绝对路径而不是相对路径。最简单的方法是在路径前添加

      dirname(__FILE__)  // for php < 5.3
      __DIR__            // for php >= 5.3 
      

      【讨论】:

        【解决方案4】:

        您的包含路径中有多少项目?位置的顺序对您的应用程序是否合理?如果您使用的是相对路径,那么它将检查包含路径的位置以查找匹配的文件。

        【讨论】:

          【解决方案5】:

          需要消耗时间的原因是磁盘IO速度。您可以尝试使用自动加载,因为您可能需要实际未使用的文件。另一种减少磁盘 IO 开销的方法是将 PHP 文件合并到一个大文件中。要求一个包含您始终需要的代码的大文件比在多个小文件中包含相同的代码要快。

          另外,APC 有一个加速需要的功能,称为 apc.include_once_override,您可以尝试启用它。

          【讨论】:

          • 你指的是 apc.stat 吗?
          • 这是 apc.include_once_override
          猜你喜欢
          • 2021-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-01
          • 2020-04-05
          相关资源
          最近更新 更多