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 23 PHP
在PHP中实现Javascript的escape()函数代码
Aug 08 PHP
解析在apache里面给php写虚拟目录的详细方法
Jun 24 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
php使用curl和正则表达式抓取网页数据示例
Apr 13 PHP
解决CodeIgniter伪静态失效
Jun 09 PHP
PHP使用mkdir创建多级目录的方法
Dec 22 PHP
php组合排序简单实现方法
Oct 15 PHP
php正则提取html图片(img)src地址与任意属性的方法
Feb 08 PHP
thinkPHP5 tablib标签库自定义方法详解
May 10 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 PHP
如何利用PHP实现上传图片功能详解
Sep 24 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实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
php计算两个坐标(经度,纬度)之间距离的方法
2015/04/17 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
可靠的数据流传输TCP
2016/03/15 面试题
软件测试有哪些?什么是配置项?
2012/02/12 面试题
前厅收银主管岗位职责
2014/02/04 职场文书
四年大学自我鉴定
2014/02/17 职场文书
标准化管理实施方案
2014/02/25 职场文书
2014年国培研修感言
2014/03/09 职场文书
铅球加油稿100字
2014/09/26 职场文书
2014年平安建设工作总结
2014/11/19 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
java executor包参数处理功能 
2022/02/15 Java/Android
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android
Python可视化神器pyecharts绘制水球图
2022/07/07 Python