php file_exist&is_file的区别

PHP file_exists与is_file区别

file_exist&&is_file区别

	官方文档:
	file_exists() 函数检查文件或目录是否存在。
	如果指定的文件或目录存在则返回 true,否则返回 false。
	
	is_file() 函数检查指定的文件是否是常规的文件。
	如果文件是常规的文件,该函数返回 TRUE。
<?php

var_dump(__DIR__);   // 当前路径
// file_exists检测
echo "\r\r".'file_exists'."\r";
var_dump(file_exists(__DIR__));   // 检测绝对目录
var_dump(file_exists('../666'));   // 检测相对目录
var_dump(file_exists(__DIR__.'/index.php'));  // 检测绝对路径文件
var_dump(file_exists('./index.php')); // 检测相对路径文件
var_dump(file_exists($_SERVER['HTTP_HOST'].'/index.php'));  // 检测网络文件
$tmp = microtime(true)*10000;
for($i=0;$i<1000;$i++){  // 验证file_exists效率(文件不存在存在)
    clearstatcache(); // 清除文件函数状态缓存
    file_exists('./index.php');
}
echo 'file_exists文件不存在';
echo (microtime(true)*10000)-$tmp;
echo "\r";

$tmp = microtime(true)*10000;
for($i=0;$i<1000;$i++){  // 验证file_exists效率(文件不存在存在)
    clearstatcache(); // 清除文件函数状态缓存
    file_exists('./index1.php');
}
echo 'file_exists文件不存在';
echo (microtime(true)*10000)-$tmp;

// is_file检测
echo "\r\r".'is_file'."\r";
var_dump(is_file(__DIR__));   // 检测绝对目录
var_dump(is_file('../666'));   // 检测相对目录
var_dump(is_file(__DIR__.'/index.php'));  // 检测绝对路径文件
var_dump(is_file('./index.php')); // 检测相对路径文件
var_dump(is_file($_SERVER['HTTP_HOST'].'/index.php'));  // 检测网络文件
$tmp = microtime(true)*10000;
for($i=0;$i<1000;$i++){  // 验证is_file效率(文件存在)
    clearstatcache(); // 清除文件函数状态缓存
    is_file('./index.php');
}
echo 'is_file文件存在';
echo (microtime(true)*10000)-$tmp;
echo "\r";

$tmp = microtime(true)*10000;
for($i=0;$i<1000;$i++){  // 验证file_exists效率
    clearstatcache(); // 清除文件函数状态缓存
    is_file('./index1.php');
}
echo 'is_file文件不存在';
echo (microtime(true)*10000)-$tmp;

返回值

由此可见

区别

is_filefile_exists
检测范围文件文件或目录
检测效率(文件存在1000次)0.0085秒0.0273秒
检测效率(文件不存在1000次)0.0267秒0.0642秒

共同点
只能检测绝对路径和相对路径(检测不到就是路径不对)
无法检测网路路径
都会被缓存状态,如果一个请求会多次查询同一个文件状态,都会被缓存。需要clearstatcache()清除

注意

域名拼接路径都是网路地址,不管是你本地还是网上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值