我现在正在编写一个php框架。我想知道在请求期间,当require
/ include
或require_once
/ include_once
文件过多时,它是否会变慢?
答案 0 :(得分:1)
当然可以。做太多次会导致速度减慢。
但更严重的是,与内存中发生的任何事情相比,触摸磁盘的IO操作都非常慢。因此,在使用大型框架时,包括文件在内的 通常会成为主要的性能因素(只需查看Zend Framework ...)。
但是,通常有一些方法可以减轻这种情况,例如APC和类似的操作码缓存。
有时也采用编程方法。例如,如果我没记错的话,Doctrine 1可以将所有内容捆绑到一个巨大的文件中,以减少IO调用。
如果有疑问,请对使用您的框架编写的应用程序进行深入分析,看看include / require / etc是否是主要的慢点之一。
答案 1 :(得分:1)
是的,这会降低您的应用程序速度。 *_once
调用通常更昂贵,因为必须检查是否已包含该文件。有很多包含,有很多硬盘访问和大量的内存使用捆绑。我使用Zend Framework开发了应用程序,每次请求时总共包含150到200个文件 - 您真的可以看到它对整体性能的影响。
答案 2 :(得分:1)
您添加的文件越多,就会增加一些负载。但是,如果您必须在require和require_once之间进行选择,则require_once / include_once需要更多负载,因为服务器需要进行检查以查看是否在其他地方包含了相同的文件。所以如果你可以避免这种情况,至少可以提高性能。
答案 3 :(得分:0)
除非您使用缓存库,否则每次请求时都会反复包含这些文件。肯定会减慢速度。创建一个仅include
- 需要include
- ed。