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

Sve*_*sen 6 php caching file-exists

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

场景#1

include '/path/to/file.php';
Run Code Online (Sandbox Code Playgroud)

场景#2

if (file_exists('/path/to/file.php'))
    include '/path/to/file.php';
Run Code Online (Sandbox Code Playgroud)

我知道场景#1触及磁盘一次.现在,据我所知,它file_exists()缓存路径以及文件是否存在.为了清除您需要调用的缓存clearstatcache().

但是include,等等,是否也使用缓存?或者它是独一无二的file_exists()

hak*_*kre 5

只需提醒一点:include使用包含路径.file_exists没有.除此之外,你显然在寻找问题而不是解决方案(这绝不是错误的,只是说,我的答案可能无法实现你所寻求的,只包括一个片段).

  • @IanAtkin:更多次.它很快,即使它是磁盘I/O :) (4认同)

Chr*_*ial 3

这两个示例都接触磁盘两次 \xe2\x80\x93 读取目录,然后读取文件。在第一个示例中,这两者都发生在一个命令期间,第二个命令将它们分开。\xe2\x80\x99s include() 不太可能再次读取该目录,因为您的操作系统应该包含某种 HD 缓存,该缓存至少应该持续这么长时间。

\n\n

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

\n