PHP中判断文件存在使用is_file还是file_exists?


Posted in PHP onApril 03, 2015

判断文件存在用is_file还是file_exists?

在写程序时发现在判断文件是否存在时,有两种写法,有的人用了is_file,有的人用了file_exists,用哪个更好或者说更合适呢?

看了这篇PHP中file_exists与is_file,is_dir的区别的说法基本明白,PHP的 file_exists = is_dir + is_file。

写程序验证一下:

分别执行1000次,记录所需时间。

文件存在(当前目录)

is_file:0.4570ms

file_exists:2.0640ms

文件存在(绝对路径3层/www/hx/a/)
is_file:0.4909ms

file_exists:3.3500ms

文件存在(绝对路径5层/www/hx/a/b/c/)
is_file:0.4961ms

file_exists:4.2100ms

文件不存在(当前目录)
is_file:2.0170ms

file_exists:1.9848ms

文件不存在(绝对路径5层/www/hx/a/b/c/)
is_file:4.1909ms

file_exists:4.1502ms

目录存在
file_exists:2.9271ms

is_dir:0.4601ms

目录不存在
file_exists:2.9719ms

is_dir:2.9359ms

is_file($file)
file_exists($file)

当$file是目录时,is_file返回false,file_exists返回true

文件存在的情况下,is_file比file_exists要快得多;
要检测文件所在的目录越深,速度差越多,但至少快4倍。

文件不存在的情况下,is_file比file_exists要慢一点点,但可以忽略不计。

目录存在的情况下,is_dir比file_exists要快得多;
目录不存在的情况下,is_dir比file_exists要慢一点点,但可以忽略不计。

结论:

如果要判断文件是否存在,用函数 is_file(),
如果要判断目录是否存在,用函数 is_dir(),
好像没地方需要用file_exists了,不确定传入的参数是文件还是目录的时候用?

附测试程序:

function runtime($t1){    

    return number_format((microtime(true) - $t1)*1000, 4).'ms';

}

$times = 1000;
$t1 = microtime(true);

for($i=0;$i<$times;$i++){

    is_file('/www/hx/www.9enjoy.com/config.php');

}
echo '<br>is_file:'.runtime($t1);
$t2 = microtime(true);  

for($i=0;$i<$times;$i++){

    file_exists('/www/hx/www.9enjoy.com/config.php');

}

echo '<br>file_exists:'.runtime($t2);  
/*

$t3 = microtime(true);  

for($i=0;$i<$times;$i++){

    is_dir('/www/hx/www.9enjoy.com/');

}

echo '<br>is_dir:'.runtime($t3);   

*/
PHP 相关文章推荐
php trim 去除空字符的定义与语法介绍
May 31 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 PHP
php使用ereg验证文件上传的方法
Dec 16 PHP
php开发微信支付获取用户地址
Oct 04 PHP
php编程中echo用逗号和用点号连接的区别
Mar 26 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
thinkPHP基于ajax实现的菜单与分页示例
Jul 12 PHP
Yii隐藏URL中index.php的方法
Jul 12 PHP
Laravel如何自定义command命令浅析
Mar 23 PHP
基于PHP实现微信小程序客服消息功能
Aug 12 PHP
深入理解PHP+Mysql分布式事务与解决方案
Dec 03 PHP
php专用数组排序类ArraySortUtil用法实例
Apr 03 #PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 #PHP
PHP中返回引用类型的方法
Apr 03 #PHP
PHP中应该避免使用同名变量(拆分临时变量)
Apr 03 #PHP
PHP5多态性与动态绑定介绍
Apr 03 #PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 #PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 #PHP
You might like
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
js 获取服务器控件值的代码
2010/03/05 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
荷兰领先的百货商店:De Bijenkorf
2018/10/17 全球购物
药学职务聘任书
2014/03/29 职场文书
培训讲师岗位职责
2014/04/13 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
2014年医院后勤工作总结
2014/12/06 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
社区活动总结
2015/02/04 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
法院执行局工作总结
2015/08/11 职场文书
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python