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中显示格式化的用户输入
Oct 09 PHP
php图片加水印原理(超简单的实例代码)
Jan 18 PHP
基于php-fpm 参数的深入理解
Jun 03 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
解析php多线程下载远程多个文件
Jun 25 PHP
使用PHP实现蜘蛛访问日志统计
Jul 05 PHP
php-redis中的sort排序函数总结
Jul 08 PHP
PHP实现带重试功能的curl连接示例
Jul 28 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
thinkPHP框架自动填充原理与用法分析
Apr 03 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
Jan 23 PHP
PHP isset()及empty()用法区别详解
Aug 29 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入门
2006/10/09 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
php判断文件上传图片格式的实例详解
2017/09/30 PHP
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
模仿jQuery each函数的链式调用
2009/07/22 Javascript
javascript 类型判断代码分析
2010/03/28 Javascript
JavaScript中链式调用之研习
2011/04/07 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
2016/01/12 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
Bootstrap Paginator+PageHelper实现分页效果
2018/12/29 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
2020/04/27 Javascript
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
动态创建类实例代码
2009/10/07 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
Python对数据库操作
2016/03/28 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
Python sep参数使用方法详解
2020/02/12 Python
python能做哪些生活有趣的事情
2020/09/09 Python
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
大学生入党推荐书范文
2014/05/17 职场文书
加油口号大全
2014/06/13 职场文书
客房服务员岗位职责
2015/02/09 职场文书
2015年前台个人工作总结
2015/04/03 职场文书