据我了解,当 PHP 遇到include
(或require
,或它们的_once
版本)时,它会在文件系统中查找文件并解析它,就像代码在include
调用位置时一样(除了return
在文件中调用) )。
因此,在繁忙的服务器上,很容易想象很多人会重复访问包含的文件(例如,连接到数据库的文件或定义全局函数的文件)。这会对性能产生显着影响吗?
通过将文件内容转储到相关位置来“编译”包含是否有利?
据我了解,当 PHP 遇到include
(或require
,或它们的_once
版本)时,它会在文件系统中查找文件并解析它,就像代码在include
调用位置时一样(除了return
在文件中调用) )。
因此,在繁忙的服务器上,很容易想象很多人会重复访问包含的文件(例如,连接到数据库的文件或定义全局函数的文件)。这会对性能产生显着影响吗?
通过将文件内容转储到相关位置来“编译”包含是否有利?
我对 include()、require() 等的理解是,它的工作方式很像 C 预处理器 #include 指令,并且基本上运行所有代码,就好像它在当前文件的该位置内联一样,正如您所相信的那样。
正如上面的一些评论所说,如果这些文件被频繁使用(例如,经常通过 include() 调用),它们很可能位于 RAM 或至少一个磁盘缓存中。
无论如何,PHP 文件基本上都是 JIT 编译和缓存的,这毫无价值,因此您不应该注意到任何一种方式的性能损失。(更详细的信息在这里)。
此外,作为旁注 - 与 include() 和 require() 相比,include_once() 和 require_once()确实有很大的开销,所以如果速度是一个因素,请尽量避免使用这些调用。