我通过 xdebug 分析器运行了我的代码,并发现超过 30% 的时间花费在 require() 调用上。如何最好地改进这个问题?我看到一些帖子提到使用 __autoload,但是有关它对我们使用的 APC 的影响存在不一致的说法,并且对于它是否有助于提高性能存在疑虑。
我通过 xdebug 分析器运行了我的代码,并发现超过 30% 的时间花费在 require() 调用上。如何最好地改进这个问题?我看到一些帖子提到使用 __autoload,但是有关它对我们使用的 APC 的影响存在不一致的说法,并且对于它是否有助于提高性能存在疑虑。
请确保您的包含文件使用绝对路径而非相对路径。最简单的方法是在路径前加上
dirname(__FILE__) // for php < 5.3
__DIR__ // for php >= 5.3
APC和autoload曾经有过一些问题。那是很久以前的事了。一般来说,APC可以加速您的require
语句,因为它缓存了解析后的文件。默认情况下,APC仍然会stat
文件,以查看磁盘上是否已更改。您可以通过使用绝对路径并关闭apc.stat
设置来防止这种情况发生。请注意,这意味着您必须重新启动服务器才能清除缓存。
你的包含路径中有多少项?这些位置的顺序对你的应用程序来说是否合理?如果你使用相对路径,它将按顺序检查包含路径位置以寻找匹配的文件。