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制作静态网站的模板框架(二)
Oct 09 PHP
用PHP和ACCESS写聊天室(八)
Oct 09 PHP
php获取地址栏信息的代码
Oct 08 PHP
PHP提取字符串中的图片地址[正则表达式]
Nov 12 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
基于PHP array数组的教程详解
Jun 05 PHP
PHP的基本常识小结
Jul 05 PHP
php动态绑定变量的用法
Jun 16 PHP
PHP经典面试题之设计模式(经常遇到)
Oct 15 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
Apr 24 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
Oct 10 PHP
php模拟实现斗地主发牌
Apr 22 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+MYSQL的文章管理系统(一)
2006/10/09 PHP
关于文本留言本的分页代码
2006/10/09 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
js和jquery中获取非行间样式
2017/05/05 jQuery
Vue.extend构造器的详解
2017/07/17 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
Python异常学习笔记
2015/02/03 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
Python的垃圾回收机制详解
2019/08/28 Python
python实现静态服务器
2019/09/05 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
2020/02/25 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
JSP&Servlet技术面试题
2015/05/21 面试题
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
洗发水广告词
2014/03/13 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
服装设计专业自荐信
2014/06/17 职场文书
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python
ipad隐藏软件app图标方法
2022/04/19 数码科技