PHP 中的is_file或file_exists
我需要检查文件是否在指定位置的HDD上($path.$file_name)。
is_file()
和 file_exists()
函数之间的区别是什么,在 PHP 中使用哪个更好/更快?
我需要检查文件是否在指定位置的HDD上($path.$file_name)。
is_file()
和 file_exists()
函数之间的区别是什么,在 PHP 中使用哪个更好/更快?
is_file()
如果给定路径指向目录,则返回。 如果给定路径指向有效的文件或目录,则将返回。因此,这将完全取决于您的需求。如果您想知道它是否是文件,请使用 。否则,请使用 。false
file_exists()
true
is_file()
file_exists()
is_file()
是最快的,但最近的基准测试显示对我来说稍微快一点。所以我想这取决于服务器。file_exists()
我的测试基准:
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 秒
编辑:移动的清除缓存();在循环内部。谢谢CJ丹尼斯。