PHP中file_exists与is_file,is_dir的区别

很显然file_exists是受了asp的影响,因为asp不但有fileExists还有folderExists,driverExists,那么PHP中file_exists是什么意思呢?

PHP的 file_exists = is_dir + is_file

它既可以判断文件是否存在,又可以判断目录是否存在。但这样一个全面的函数执行效率非常低,就像asp中request不指定是form,还是get,cookies,所以结论是:

◦如果要判断目录是否存在,请用独立函数 is_dir(directory)
◦如果要判断文件是否存在,请用独立函数 is_file(filepath)
--------------------------------------------------------------------------------------

is_file 只判断文件是否存在;
file_exists 判断文件是否存在或者是目录是否存在;
is_dir 判断目录是否存在;
--------------------------------------------------------------------------------------

查看手册,虽然这两个函数的结果都会被缓存,但是is_file却快了N倍。
还有一个值得注意的:
文件存在的情况下,is_file比file_exists要快N倍;
文件不存在的情况下,is_file比file_exists要慢;
结论是,file_exits函数并不会因为该文件是否真的存在而影响速度,但是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了,不确定传入的参数是文件还是目录的时候用

时间: 2024-10-07 11:16:39

PHP中file_exists与is_file,is_dir的区别的相关文章

PHP中file_exists与is_file,is_dir的区别介绍_php技巧

很显然file_exists是受了asp的影响,因为asp不但有fileExists还有folderExists,driverExists,那么PHP中file_exists是什么意思呢? PHP的 file_exists = is_dir + is_file 它既可以判断文件是否存在,又可以判断目录是否存在.但这样一个全面的函数执行效率非常低,就像asp中request不指定是form,还是get,cookies,所以结论是: ◦如果要判断目录是否存在,请用独立函数 is_dir(direct

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

看了这篇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_f

php中is_file和file_exists与is_dir的区别

is_file 只判断文件是否存在:  代码如下 复制代码 <?php $file = "test.txt"; if(is_file($file)) { echo ("$file is a regular file"); }else { echo ("$file is not a regular file"); } ?> 输出:test.txt is a regular file file_exists 判断文件是否存在或者是目录是否

PHP中file_exists()判断中文文件名无效的解决方法_php技巧

本文实例讲述了PHP中file_exists()判断中文文件名无效的解决方法.分享给大家供大家参考.具体方法如下: php中判断文件是否存在我们会使用file_exists函数或is_file函数,但在使用file_exists时如果你文件名或路径是中文在uft8编码文档时是无效.本文就来解决此问题,下面我们一起来看看. 定义和用法:file_exists() 函数检查文件或目录是否存在. 如果指定的文件或目录存在则返回 true,否则返回 false. 例子1 复制代码 代码如下: <?php

PHP中date与gmdate有什么区别?

  一.PHP中date与gmdate有什么区别? PHP中的时间有2个格式化函数:date()和gmdate(),在官方的文档中的描述为: date - 格式化一个本地时间/日期 gmdate - 格式化一个 GMT/UTC 日期/时间,返回的是格林威治标准时(GMT). 举个例子,我们现在所在的时区是+8,那么服务器运行以下脚本返回的时间应该是这样的: 当前时间假定是2007-03-14 12:15:27 echo date('Y-m-d H:i:s', time()); 输出为:2007-

SQL中UNION 与 UNION ALL 的区别

区别 SQLServer2000中UNION与UNION ALL的区别 UNION 运算符: 将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行.这与使用联接组合两个表中的列不同. 使用 UNION 组合两个查询的结果集的两个基本规则是: 所有查询中的列数和列的顺序必须相同. 数据类型必须兼容.        这种多结果的查询组合为单一结果集在实际中应用的非常方便.但在应用中也有有着问题,如下实例可以进一步说明问题. 问题描述:        为了进一步分析与统计企

asp中get post提交表单区别

  asp教程中get post提交表单区别 Get和Post方式的区别有5点 1. get是从服务器上获取数据,post是向服务器传送数据. 2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到.post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址.用户看不到这个过程. 3. 对于get方式,服务器端用Request.QueryString获取变

C#中string.Empty和null的区别详解

  这篇文章主要介绍了C#中string.Empty和null的区别详解,本文同时讲解了空字符串和Empty的区别以及string.Empty与null的区别,需要的朋友可以参考下 这是一个及其常见的问题,网上已经有关于这个问题的很多讨论.但是我觉得都是不求甚解,有一些还是在误导别人.下面我来说下我对这三者的理解,如有错误的地方请大家及时指正. 一:""与string.Empty我认为是一样的.网上有一篇被转载了几十遍的文章是这样说的string.Empty 不分配存储空间,"

C语言中常量指针与指针常量区别浅析

这篇文章主要介绍了C语言中常量指针与指针常量区别,有需要的朋友可以参考一下 常量指针是指--指向常量的指针,顾名思义,就是指针指向的是常量,即,它不能指向变量,它指向的内容不能被改变,不能通过指针来修改它指向的内容,但是指针自身不是常量,它自身的值可以改变,从而指向另一个常量. 指针常量是指--指针本身是常量.它指向的地址是不可改变的,但地址里的内容可以通过指针改变.它指向的地址将伴其一生,直到生命周期结束.有一点需要注意的是,指针常量在定义时必须同时赋初值. 注:也有人将这两个名称的定义与含义