PHP中file_exists与is_file,is_dir的区别

凨影 836

PHP中file_exists与is_file,is_dir的区别

在php中file_exists与is_file,is_dir都可以用来检测目录或文件是否存在了,那么它们三者的具体区别在哪里呢,下面我们一起来看看吧。

PHP的 file_exists = is_dir + is_file

它既可以判断文件是否存在,又可以判断目录是否存在。但这样一个全面的函数执行效率非常低,所以结论是:

如果要判断目录是否存在,请用独立函数 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)fileexists(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了,不确定传入的参数是文件还是目录的时候用

 

联系QQ:77798085 赞助请点这里
管理员回复
    全部回复 (10)
    • 紫气东来9 2020-5-26
      2
      顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶!
      亚太地区
      这个人很有个性,连签名都没有!
    • bihui 2020-6-13
      3
      楼主很辛苦,若是不回帖,心里过意不去,可是我打字实在不行,只好快速回复了,楼主不要见怪!
      亚太地区
      这个人很有个性,连签名都没有!
    • 求不得 2020-6-14
      4
      心情不好,来杯板蓝根!
      亚太地区
      这个人很有个性,连签名都没有!
    • XGHOME 2020-6-16
      5
      谢谢楼主,楼主辛苦!
      亚太地区
      这个人很有个性,连签名都没有!
    • roothuang 2020-6-18
      6
      你就是我心中的那首忐忑,总是让我惊心动魄。
      亚太地区
      这个人很有个性,连签名都没有!
    • hello_123456 2020-6-19
      7
      楼主,你写得实在是太好了。我惟一能做的,就只有把这个帖子顶上去这件事了。
      亚太地区
      这个人很有个性,连签名都没有!
    • abcadc 2020-6-19
      8
      既生瑜何生亮,世上有楼主这样的高人,某怎敢攀比,回个帖灰溜溜的闪人咯!
      亚太地区
      这个人很有个性,连签名都没有!
    • jinzhuxin21 2020-6-19
      9
      我要拿出这帖子奉献给世人赏阅,我要把这个帖子一直往上顶,往上顶!顶到所有人都看到为止!
      亚太地区
      这个人很有个性,连签名都没有!
    • kkkio2 2020-6-19
      10
      与人为善, 好运常伴!
      亚太地区
      这个人很有个性,连签名都没有!
    • 百色 2020-6-20
      11
      沙发我没有,板凳我没有,板也没有,只好站在后面排队支持!
      亚太地区
      这个人很有个性,连签名都没有!