include()使用file_exists()的缓存吗?

时间:2012-12-23 01:34:23

标签: php caching file-exists

问题很简单:在触摸磁盘时,这两个示例是相同的,还是场景#2触摸磁盘两次?

场景#1

include '/path/to/file.php';

情景#2

if (file_exists('/path/to/file.php'))
    include '/path/to/file.php';

我知道场景#1触及磁盘一次。现在,正如我所理解的那样file_exists()缓存路径以及文件是否存在。要清除该缓存,您需要调用clearstatcache()

include等等,是否也使用该缓存?或者它是file_exists()独有的吗?

2 个答案:

答案 0 :(得分:5)

提醒一点:include使用包含路径。 file_exists没有。除此之外,你显然在寻找问题而不是解决方案(这绝不是错误的,只是说,我的答案可能无法满足您的要求,仅涵盖一个片段)。

答案 1 :(得分:3)

这两个示例都会触摸磁盘两次 - 读取目录然后读取文件。在第一个示例中,这两个命令都发生在一个命令中,第二个命令将它们分开。 include()不太可能再次读取目录,因为你的操作系统应该包含某种高清缓存,这应该至少持续这么久。

但你显然是在试图过度优化某些东西。除非您在脚本中使用> 100次,否则两个选项之间不会有任何性能差异。