PHP性能受require()影响

4

我通过 xdebug 分析器运行了我的代码,并发现超过 30% 的时间花费在 require() 调用上。如何最好地改进这个问题?我看到一些帖子提到使用 __autoload,但是有关它对我们使用的 APC 的影响存在不一致的说法,并且对于它是否有助于提高性能存在疑虑。


你试过使用include()吗? - Vinko Vrsalovic
require() 不就是 include() 的硬性失败版本吗? - bob
理论上是的。我想知道它是否会有巨大的影响,所以在评论中提出问题而不是回答 :) - Vinko Vrsalovic
5个回答

4
要消耗时间的原因是磁盘IO速度。您可以尝试使用自动加载,因为您可能需要的文件实际上并未使用。另一种减少磁盘IO开销的方法是将您的PHP文件合并成一个大文件。要求包含您始终需要的代码的大文件比在多个小文件中包含相同的代码更快。
此外,APC具有一项名为apc.include_once_override的功能,可加速要求,您可以尝试启用此功能。

你是指 apc.stat 吗? - bob
这是apc.include_once_override。 - Jani Hartikainen

2

请确保您的包含文件使用绝对路径而非相对路径。最简单的方法是在路径前加上

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

1

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

这样的编译器可以使所有内容都更快,包括文件。


1

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


0

你的包含路径中有多少项?这些位置的顺序对你的应用程序来说是否合理?如果你使用相对路径,它将按顺序检查包含路径位置以寻找匹配的文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接