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&amp;mysql(五)
Oct 09 PHP
用mysql_fetch_array()获取当前行数据的方法详解
Jun 05 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
Jun 30 PHP
用 Composer构建自己的 PHP 框架之基础准备
Oct 30 PHP
php中rename函数用法分析
Nov 15 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
php数据访问之查询关键字
May 09 PHP
浅谈PHP面向对象之访问者模式+组合模式
May 22 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
php实现获取近几日、月时间示例
Jul 06 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
PHP数据缓存技术
2007/02/14 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
php获取根域名方法汇总
2014/10/28 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
xmlHTTP实例
2006/10/24 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
2015/06/18 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
Vue基础配置讲解
2019/11/29 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
Python生成验证码实例
2014/08/21 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
2017/12/08 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
优秀员工评语
2014/02/10 职场文书
事假请假条范文
2014/04/11 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
个性发展自我评价2015
2015/03/09 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
2016年世界艾滋病日宣传活动总结
2016/04/01 职场文书
python通过新建环境安装tfx的问题
2022/05/20 Python