您当前的位置: 首页 > 网站编程 > PHP教程 > PHP中is_file不能替代file_exists的理由

PHP中is_file不能替代file_exists的理由

作者:不详 来源:网络 发布时间: 2014-08-06 22:07 点击:
首先要提出的问题是,is_file真的可以替代file_exists使用吗?答案是否定的。为什么?原因很简单,is_file有缓存 我们可以使用下面的代码测试一下: 代码如下:?php $filename = 'test.txt'; if (is_file($filename)) { echo $filename exists!n; } else { echo $filena

PHP中is_file不能替代file_exists的理由

  首先要提出的问题是,is_file真的可以替代file_exists使用吗?答案是否定的。为什么?原因很简单,is_file有缓存

  我们可以使用下面的代码测试一下:

  代码如下:<?php

  $filename = 'test.txt';

  if (is_file($filename)) {

  echo "$filename exists!n";

  } else {

  echo "$filename no exists!n";

  }

  sleep(10);

  if (is_file($filename)) {

  echo "$filename exists!n";

  } else {

  echo "$filename no exists!n";

  }

  ?>

  在运行测试代码时,我们确保test.txt文件存在。在上面的代码中,第一次使用is_file函数判断文件是否存在,然后调用sleep函数睡眠10秒。在这10秒内,我们要把test.txt文件删除。最后看看第二次调用is_file函数的结果。输出结果如下:

  test.txt exists!

  test.txt exists!

  嗯,你没有看错,两次都是输出“test.txt exists!”,这是为什么呢?原因就是is_file有缓存。第一次调用is_file函数的时候,PHP会把文件的属性(file stat)保存下来,当再次调用is_file的时候,如果文件名更第一次的一样,那么就会直接返回缓存。

  那么把is_file改为file_exists呢?我们可以把上面代码的is_file函数改为file_exists函数,再次使用上面的测试方法测试。结果如下:

  test.txt exists!

  test.txt no exists!

  第二次调用file_exists的时候返回文件不存在,这是因为file_exists函数没有缓存,没次调用file_exists的时候都会去磁盘搜索文件是否存在,所以第二次才会返回false。

  说了那么多,我只想说明is_file不能代替file_exists使用,如果你硬是觉得is_file的性能好,那我也没办法
分享到:
本文"PHP中is_file不能替代file_exists的理由"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4