php 检查文件是否存在函数file_exists与is_file的区别
从字面上看,判断一个文件是否存在理应使用 file_exists()函数,但file_exists()函数除了可以判断文件是否存在外,还可以判断目录是否存在,正因为file_exists()函数既可以判断文件也可判断目录是否存在,所以导致file_exists()函数函数的执行效率非常低,远远不及is_file()函数,is_file判断给定文件名是否存在,该函数只能判断文件是否存在,不能判断目录是否存在。
下面我们来通过程序验证一下file_exists与is_file的效率:
分别执行1000次,记录所需时间。
文件存在(当前目录)
is_file:0.4570ms
file_exists:2.0640ms
文件存在(绝对路径3层/www/hx/a/)
is_file:0.4909ms
file_exists:3.3500ms
文件存在(绝对路径5层/www/hx/a/b/c/)
is_file:0.4961ms
file_exists:4.2100ms
文件不存在(当前目录)
is_file:2.0170ms
file_exists:1.9848ms
文件不存在(绝对路径5层/www/hx/a/b/c/)
is_file:4.1909ms
file_exists:4.1502ms
目录存在
file_exists:2.9271ms
is_dir:0.4601ms
目录不存在
file_exists:2.9719ms
is_dir:2.9359ms
is_file($file)
file_exists($file)
当$file是目录时,is_file返回false,file_exists返回true
最终结论:
◦如果要判断目录是否存在,请用独立函数 is_dir(directory)
◦如果要判断文件是否存在,请用独立函数 is_file(filepath)
is_file 只判断文件是否存在;
file_exists 判断文件是否存在或者是目录是否存在;
is_dir 判断目录是否存在;
查看手册,虽然这两个函数的结果都会被缓存,但是is_file却快了N倍。
还有一个值得注意的:
文件存在的情况下,is_file比file_exists要快N倍;
文件不存在的情况下,is_file比file_exists要慢;
结论是,file_exits函数并不会因为该文件是否真的存在而影响速度,但是is_file影响就大了。
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- RestPack Java实现Html转PDF文件
- 六、垃圾回收_判断对象是否存活算法_引用计数法详解
- webpack + express 实现文件精确缓存
- python提取视频中的音频
- Vue3 响应式原理
- vue-mergeable-table 动态生成的可合并行列的表格
- 【GOFLY】基于GO语言gin框架和websocket实现的全开源WEB客服即时通讯管理系统
- edgeXFoundry中modbus通信部署和测试(待续)
- C++面向对象学习之运算符重载(1)
- PAT (Basic Level) Practice (中文)1045 快速排序 (25 分)
- PAT (Advanced Level) Practice 1028 List Sorting (25分)
- CNS图表复现06—根据CellMarker网站进行人工校验免疫细胞亚群
- 【Java】03 流程控制语句
- Artwork (Gym - 102346A)【DFS、连通块】
- PAT (Basic Level) Practice (中文)1046 划拳 (15 分)