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 出现乱码的解决方法
Aug 08 PHP
php查看session内容的函数
Aug 27 PHP
php for 循环语句使用方法详细说明
May 09 PHP
php程序的国际化实现方法(利用gettext)
Aug 14 PHP
php中的常用魔术方法总结
Aug 02 PHP
PHP+MYSQL会员系统的开发实例教程
Aug 23 PHP
PHP实现的简单mock json脚本分享
Feb 10 PHP
在WordPress中实现发送http请求的相关函数解析
Dec 29 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
Apr 01 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
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
盘点PHP和ASP.NET的10大对比!
2015/12/24 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
2013/01/21 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
2018/08/31 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
会计出纳岗位职责
2013/12/25 职场文书
甜品店的创业计划书范文
2014/01/02 职场文书
家长对孩子评语
2014/01/30 职场文书
护士节活动总结
2014/08/29 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
2015年护士节慰问信
2015/03/23 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python