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 相关文章推荐
Apache2 httpd.conf 中文版
Nov 17 PHP
坏狼的PHP学习教程之第1天
Jun 15 PHP
PHP4中session登录页面的应用
Jul 25 PHP
phpcms模块开发之swfupload的使用介绍
Apr 28 PHP
PHP实现利用MySQL保存session的方法
Aug 23 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
Jul 28 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
May 30 PHP
yii2中关于加密解密的那些事儿
Jun 12 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
PHP修改session_id示例代码
2014/01/08 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
php实现图片以base64显示的方法
2016/10/13 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
CCPry JS类库 代码
2009/10/30 Javascript
javascript Object与Function使用
2010/01/11 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
如何获取Python简单for循环索引
2019/11/21 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
会计专业自我鉴定范文
2013/10/06 职场文书
在职人员函授期间自我评价分享
2013/11/08 职场文书
致400米运动员广播稿
2014/02/07 职场文书
高中生操行评语大全
2014/04/25 职场文书
学生会主席演讲稿
2014/04/25 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python