PHP中的is_file或file_exists
我需要检查一个文件是否在指定位置($ path。$ file_name)的硬盘上。
is_file()
和file_exists()
函数之间的区别是什么?在PHP中使用哪个更好/更快?
如果给定的path指向一个目录, is_file()
将返回false
。 如果给定的path指向一个有效的文件或目录, file_exists()
将返回true
。 所以这完全取决于你的需求。 如果你想特别知道它是否是一个文件,使用is_file()
。 否则,使用file_exists()
。
is_file()
是最快的,但最近的基准testing显示file_exists()
对我来说稍微快一点。 所以我想这取决于服务器。
我的testing基准:
benchmark('is_file'); benchmark('file_exists'); benchmark('is_readable'); function benchmark($funcName) { $numCycles = 10000; $time_start = microtime(true); for ($i = 0; $i < $numCycles; $i++) { clearstatcache(); $funcName('path/to/file.php'); // or 'path/to/file.php' instead of __FILE__ } $time_end = microtime(true); $time = $time_end - $time_start; echo "$funcName x $numCycles $time seconds <br>\n"; }
编辑:@Tivie感谢您的评论。 将周期数从1000更改为10k。 结果是:
-
当文件存在时 :
is_file x 10000 1.5651218891144秒
file_exists x 10000 1.5016479492188秒
is_readable x 10000 3.7882499694824秒
-
当文件不存在时 :
is_file x 10000 0.23920488357544秒
file_exists x 10000 0.22103786468506秒
is_readable x 10000 0.21929788589478秒
编辑:移动clearstatcache(); 在循环内。 感谢CJ丹尼斯。