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学习教程之第2天
Jun 15 PHP
一步一步学习PHP(6) 面向对象
Feb 16 PHP
php下用cookie统计用户访问网页次数的代码
May 09 PHP
php visitFile()遍历指定文件夹函数
Aug 21 PHP
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
Sep 19 PHP
php中{}大括号是什么意思
Dec 01 PHP
php实现mysql封装类示例
May 07 PHP
php eval函数一句话木马代码
May 21 PHP
8个PHP数组面试题
Jun 23 PHP
php把时间戳转换成多少时间之前函数的实例
Nov 16 PHP
PHP用swoole+websocket和redis实现web一对一聊天
Nov 05 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将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
javascript中的new使用
2010/03/20 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
2015/04/29 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
2017/06/12 jQuery
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
vue transition 在子组件中失效的解决
2019/11/12 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
用python实现一个简单的验证码
2020/12/09 Python
详解如何解决canvas图片getImageData,toDataURL跨域问题
2018/09/17 HTML / CSS
英国足球店:UK Soccer Shop
2017/11/19 全球购物
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
开学典礼感言
2014/02/16 职场文书
课外活动总结范文
2014/07/09 职场文书
欢迎家长标语
2014/10/08 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书
MySQL 计算连续登录天数
2022/05/11 MySQL