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 相关文章推荐
mysql时区问题
Mar 26 PHP
php adodb连接带密码access数据库实例,测试成功
May 14 PHP
Ajax+PHP 边学边练 之二 实例
Nov 24 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 PHP
php中array_slice和array_splice函数解析
Oct 18 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
May 02 PHP
IOS 开发之NSDictionary转换成JSON字符串
Aug 14 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
Jan 28 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 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
prototype 中文参数乱码解决方案
2009/11/09 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
Python字符串逐字符或逐词反转方法
2015/05/21 Python
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
python对象及面向对象技术详解
2016/07/19 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
python3.6编写的单元测试示例
2019/08/17 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
AJax面试题
2014/11/25 面试题
车间统计员岗位职责
2014/01/05 职场文书
初一家长会邀请函
2014/01/31 职场文书
晨会主持词
2014/03/17 职场文书
文艺晚会主持词
2014/03/24 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
后勤个人工作总结
2015/02/28 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
利用python做表格数据处理
2021/04/13 Python
Feign调用全局异常处理解决方案
2021/06/24 Java/Android
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS