php中判断文件存在是用file_exists还是is_file的整理

2015-01-24信息快讯网

在写程序时发现在判断文件是否存在时,有两种写法,有的人用了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了,不确定传入的参数是文件还是目录的时候用?
解析php file_exists无效的解决办法
深入file_get_contents与curl函数的详解
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
解析PHP中的file_get_contents获取远程页面乱码的问题
深入file_get_contents函数抓取内容失败的原因分析
Function eregi is deprecated (解决方法)
解析php函数method_exists()与is_callable()的区别
PHP 清空varnish 缓存的详解(包括指定站点下的)
PHP array_multisort() 函数的深入解析
php中检查文件或目录是否存在的代码小结
PHP判断文件是否存在、是否可读、目录是否存在的代码
PHP基础陷阱题(变量赋值)
PHP中file_exists与is_file,is_dir的区别介绍
比较discuz和ecshop的截取字符串函数php版
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
注册页面之前先验证用户名是否存在的php代码
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
web目录下不应该存在多余的程序(安全考虑)
PHP file_exists问题杂谈
PHP中创建空文件的代码[file_put_contents vs touch]
比file_get_contents稳定的curl_get_contents分享
shopex主机报错误请求解决方案(No such file or directory)
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
php数组函数序列之in_array() - 查找数组中是否存在指定值
php数组函数序列之array_key_exists() - 查找数组键名是否存在
©2014-2024 dbsqp.com