问题很简单:在触摸磁盘时,这两个示例是相同的,还是场景#2触摸磁盘两次?
include '/path/to/file.php';
if (file_exists('/path/to/file.php'))
include '/path/to/file.php';
我知道场景#1触及磁盘一次。现在,正如我所理解的那样file_exists()
缓存路径以及文件是否存在。要清除该缓存,您需要调用clearstatcache()
。
但include
等等,是否也使用该缓存?或者它是file_exists()
独有的吗?
答案 0 :(得分:5)
提醒一点:include
使用包含路径。 file_exists
没有。除此之外,你显然在寻找问题而不是解决方案(这绝不是错误的,只是说,我的答案可能无法满足您的要求,仅涵盖一个片段)。
答案 1 :(得分:3)
这两个示例都会触摸磁盘两次 - 读取目录然后读取文件。在第一个示例中,这两个命令都发生在一个命令中,第二个命令将它们分开。 include()不太可能再次读取目录,因为你的操作系统应该包含某种高清缓存,这应该至少持续这么久。
但你显然是在试图过度优化某些东西。除非您在脚本中使用> 100次,否则两个选项之间不会有任何性能差异。