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 文件类型判断代码
Mar 13 PHP
PHP图片等比例缩放生成缩略图函数分享
Jun 10 PHP
WAMP环境中扩展oracle函数库(oci)
Jun 26 PHP
PHP加密解密函数详解
Oct 28 PHP
WordPress分页伪静态加html后缀
Jun 08 PHP
Yii2中cookie用法示例分析
Jul 18 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
PHP实现文件上传下载实例
Oct 18 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
Apr 04 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
PHP PDOStatement::fetchObject讲解
Feb 01 PHP
PHP快速排序算法实现的原理及代码详解
Apr 03 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文件注释标记及规范小结
2012/04/01 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
jQuery下的动画处理总结
2013/10/10 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
iview实现图片上传功能
2020/06/29 Javascript
javascript实现时钟动画
2020/12/03 Javascript
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
对于Python的框架中一些会话程序的管理
2015/04/20 Python
总结python实现父类调用两种方法的不同
2017/01/15 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
关于幼儿的自我评价
2013/12/18 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
同学聚会策划方案
2014/06/06 职场文书
上海世博会口号
2014/06/19 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
上课说话检讨书500字
2014/11/01 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python