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在Web开发领域的优势
Oct 09 PHP
PHP远程连接MYSQL数据库非常慢的解决方法
Jul 05 PHP
PHP 一个随机字符串生成代码
May 26 PHP
php预定义变量使用帮助(带实例)
Oct 30 PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 PHP
PHP实现对文本数据库的常用操作方法实例演示
Jul 04 PHP
php中文字符串截取方法实例总结
Sep 30 PHP
smarty简单分页的实现方法
Oct 27 PHP
cakephp打印sql语句的方法
Feb 13 PHP
php获取网站根目录物理路径的几种方法(推荐)
Mar 04 PHP
PHP中引用类型和值类型功能与用法示例
Feb 26 PHP
PHP __call()方法实现委托示例
May 20 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
最省空间的计数器
2006/10/09 PHP
配置php网页显示各种语法错误
2013/09/23 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
解决jquery异步按一定的时间间隔刷新问题
2012/12/10 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
Javascript中For In语句用法实例
2015/05/14 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
layui文件上传实现代码
2017/05/20 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
js实现坦克移动小游戏
2019/10/28 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
一张图带我们入门Python基础教程
2017/02/05 Python
Python实现选择排序
2017/06/04 Python
numpy中索引和切片详解
2017/12/15 Python
Python实现批量压缩图片
2018/01/25 Python
Python向excel中写入数据的方法
2019/05/05 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
python中yield的用法详解
2021/01/13 Python
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
写自荐信的七个技巧
2013/10/15 职场文书
电力公司个人求职信范文
2014/02/04 职场文书
机械加工与数控专业自荐书
2014/06/04 职场文书
绿色小区申报材料
2014/08/22 职场文书
2014班子成员自我剖析材料思想汇报
2014/10/01 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
Python实现拼音转换
2021/06/07 Python
字节飞书面试promise.all实现示例
2022/06/16 Javascript