【发布时间】:2012-07-09 05:30:19
【问题描述】:
据我了解,当 PHP 遇到 include(或 require,或它们的 _once 版本)时,它会在文件系统中查找该文件并对其进行解析,就像代码在该位置时一样include 调用(文件中调用的return 除外)。
因此,在繁忙的服务器上,很容易想象很多人会重复访问包含的文件(例如,连接到数据库的文件或定义全局函数的文件)。这会对性能产生显着影响吗?
通过将文件内容转储到相关位置来“编译”包含是否有利?
【问题讨论】:
-
如果例如包含文件中的代码不包含其他文件,则可以简单地将逻辑保存在字符串中并作为 eval care 运行,以避免繁重的 FILE IO。
-
这取决于许多因素,例如文件系统如何处理“流行”文件,这些文件是否缓存在 RAM、磁盘缓存、操作码缓存等。仅在一个非常简单的框架上,非优化的系统是否会每次都从物理旋转磁盘中读取文件...
-
你说得有道理!但是,假设操作系统知道如何有效地
cache,并假设包含的文件不是很大——我相信这应该不是问题。 -
@deceze 见鬼,我们在问题发布大约一个小时后写了同样的事情...... :)
标签: php filesystems include