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 相关文章推荐
dedecms采集中可以过滤多行代码的正则表达式
Mar 17 PHP
PHP 数据结构 算法 三元组 Triplet
Jul 02 PHP
新手学习PHP的一些基础知识分享
Jul 27 PHP
PHP小教程之实现双向链表
Jun 12 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
在PHP程序中使用Rust扩展的方法
Jul 03 PHP
详解PHP对象的串行化与反串行化
Jan 24 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
PHP下载文件函数与用法示例
Sep 27 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
Jan 04 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 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
基于PHPExcel的常用方法总结
2013/06/13 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
2016/10/13 PHP
mouse_on_title.js
2006/08/25 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
Vue入门之数据绑定(小结)
2018/01/08 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
详解JavaScript的内存空间、赋值和深浅拷贝
2019/04/17 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
2019/05/23 jQuery
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
Python命令行解析模块详解
2018/02/01 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
AmazeUI 面板的实现示例
2020/08/17 HTML / CSS
环保倡议书格式范文
2014/05/14 职场文书
公司运动会策划方案
2014/05/25 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
专题民主生活会对照检查材料思想汇报
2014/09/29 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
学生通报表扬范文
2015/05/04 职场文书
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python