1

我现在正在编写一个 php 框架。require我想知道当请求期间php /includerequire_once/include_once太多文件时它是否会变慢?

4

4 回答 4

1

当然会的。做任何事情太多次会导致减速。

不过,更严重的一点是,与内存中发生的任何事情相比,接触磁盘的 IO 操作非常慢。很多时候,在使用大型框架时,包括文件是一个主要的性能因素(看看 Zend 框架......)。

但是,通常有一些方法可以缓解这种情况,例如 APC 和类似的操作码缓存。

有时也采用编程方法。例如,如果我没记错的话,Doctrine 1 能够将所有内容捆绑到一个巨大的文件中,以减少 IO 调用。

如果有疑问,请对使用您的框架编写的应用程序进行一些深入的分析,看看 include/require/etc 是否是主要的慢点之一。

于 2012-05-18T06:21:24.203 回答
1

是的,这会减慢您的申请速度。*_once调用通常更昂贵,因为必须检查该文件是否已包含在内。有很多包含,捆绑了很多硬盘访问和大量内存使用。我已经使用 Zend 框架开发了应用程序,每个请求总共包含 150 到 200 个文件 - 您确实可以看到对整体性能的影响。

于 2012-05-18T06:24:22.100 回答
1

您包含的文件越多,就会增加一些负载。但是,如果您必须在 require 和 require_once 之间进行选择,则 require_once / include_once 会承担更多负载,因为服务器需要进行检查以查看同一文件是否已包含在其他地方。因此,如果您可以避免这种情况,至少您可以提高性能。

于 2012-05-18T06:25:03.243 回答
0

除非您使用缓存库,否则每次请求到来时,这些文件都会一次又一次地包含在内。当然,它会减慢速度。创建一个只include-s 需要include-ed 的框架。

于 2012-05-18T06:29:27.960 回答