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 define函数的使用说明
Aug 27 PHP
PHP 可阅读随机字符串代码
May 26 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
微博短链接算法php版本实现代码
Sep 15 PHP
PHP Error与Logging函数的深入理解
Jun 03 PHP
php实例分享之html转为rtf格式
Jun 02 PHP
php实现模拟post请求用法实例
Jul 11 PHP
PHP仿微信多图片预览上传实例代码
Sep 13 PHP
利用ajax和PHP实现简单的流程管理
Mar 23 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
Oct 10 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
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
python生成日历实例解析
2014/08/21 Python
Python中的zip函数使用示例
2015/01/29 Python
Python的类实例属性访问规则探讨
2015/01/30 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
Python类中self参数用法详解
2020/02/13 Python
python中添加模块导入路径的方法
2021/02/03 Python
Python字符串的15个基本操作(小结)
2021/02/03 Python
优秀纪检干部材料
2014/08/27 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
2014年财务科工作总结
2014/11/11 职场文书
圆明园观后感
2015/06/03 职场文书
教师旷工检讨书
2015/08/15 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书
Python中的变量与常量
2021/11/11 Python