PHP中is_file不能替代file_exists的理由


Posted in PHP onMarch 04, 2014

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

<?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 相关文章推荐
php与mysql建立连接并执行SQL语句的代码
Jul 04 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
Aug 12 PHP
PHP中strtotime函数使用方法详解
Nov 27 PHP
mysql数据库差异比较的PHP代码
Feb 05 PHP
PHP正确解析UTF-8字符串技巧应用
Nov 07 PHP
php将gd生成的图片缓存到memcache的小例子
Jun 05 PHP
php解压文件代码实现php在线解压
Feb 13 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
Jun 21 PHP
ThinkPHP中redirect用法分析
Dec 05 PHP
php获取数组元素中头一个数组元素值的实现方法
Dec 20 PHP
php遍历替换目录下文件指定内容的方法
Nov 10 PHP
PHP 表单提交及处理表单数据详解及实例
Dec 27 PHP
php获取目标函数执行时间示例
Mar 04 #PHP
PHP代码优化的53个细节
Mar 03 #PHP
php 表单提交大量数据发生丢失的解决方法
Mar 03 #PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 #PHP
使用php清除bom示例
Mar 03 #PHP
设置php页面编码的两种方法示例介绍
Mar 03 #PHP
php ci框架中加载css和js文件失败的解决方法
Mar 03 #PHP
You might like
PHP概述.
2006/10/09 PHP
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
Yii快速入门经典教程
2015/12/28 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
php给数组赋值的实例方法
2019/09/26 PHP
js模拟C#中List的简单实例
2014/03/06 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
详解React 条件渲染
2020/07/08 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
Python单元和文档测试实例详解
2019/04/11 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
python对Excel的读取的示例代码
2020/02/14 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
咖啡店自主创业商业计划书
2014/01/22 职场文书
大学班级学风建设方案
2014/05/01 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python
Python自动化实战之接口请求的实现
2022/05/30 Python