is_file file_exists的区别
来源:互联网 发布:手机免流软件 编辑:程序博客网 时间:2024/05/20 14:16
is_file 判断文件是否存在并且检查指定的文件名是否是正常的文件;
file_exists 判断文件是否存在或者是目录是否存在;
is_dir 判断目录是否存在;
查看手册,虽然这两个函数的结果都会被缓存,但是is_file却快了N倍。
还有一个值得注意的:
文件存在的情况下,is_file比file_exists要快N倍;
文件不存在的情况下,is_file比file_exists要慢;
结论是,file_exits函数并不会因为该文件是否真的存在而影响速度,但是is_file影响就大了。
所以,第一次看py师兄的代码,发现他是这样用的:
if(file_exists(DATA_DIR.'~runtime.php') && is_file(DATA_DIR.'~runtime.php') && IS_DEPLOY){
include_once DATA_DIR.'~runtime.php';
}else{
……
}
大牛就是大牛,代码深刻呀
但是:
下面代码,
for($i=0; $i<10000; $i++){
is_file(__ROOT__ . '/App.php');
file_exists(__ROOT__ . '/App.php');
}
XDebug测试结果为:
php::is_file
————————————-
total self: 0.5ms
total cum: 0.5ms
calls: 10,000
php::file_exists
————————————-
total self: 41ms
total cum: 41ms
calls: 10,000
-----------------------------------------------------------------------------------------------
写php任何时候我都会想到效率,效率,因为你永远不知道运行你程序的网站的主机状况。
而且大部分主机都有iis ,cpu占用的限制,没有限制的主机还是别买了,呵呵
我一直以来都用file-exits 来判断文件是否存在,那天偶然发现有这么一说:is_file 比file_exits更快
写了一段代码测试了一下
$start_time = get_microtime();
for($i=0;$i<10000;$i++){
if(is_file('url.txt')) {
//do nothing;
}
}
echo 'is_file耗时-->'.(get_microtime() - $start_time).'<br>';
$start_time = get_microtime();
for($i=0;$i<10000;$i++){
if(file_exists('url.txt')) {
//do nothing;
}
}
echo 'file_exits-->'.(get_microtime() - $start_time).'<br>';
function get_microtime()//时间
{
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec + (float)$sec);
}
上面是1w次的测试,你会发现一个神奇结果
1.如果url.txt确实是存在的
那么is_file大约耗时 0.007sec.
file_exists耗时0.16sec.
is_file函数的确速度惊人!
但是别高兴太早,看另外一种情况
2.如果url.txt确实不存在
is_file耗时0.53sec.
file_exists耗时0.21sec.
3.看起来file_exits函数并不会因为该文件是否真的存在而影响速度,但是is_file影响就大了。
提示和注释: is_file(file)函数的结果会被缓存。请使用 clearstatcache()来清除缓存。
目录:
观察各个权限:test对www是没有任何权限的,而执行文件index.php有读写执行权限,包含文件test.txt有读写权限。
运行结果:
既然成功了,说明file_exists()函数是受目录权限的限制的。
那什么样的目录权限影响file_exists()呢?
我做了几个实验:
1、文件的任何上级目录,只有写权限时报文件不存在;
2、文件的任何上级目录,只有读权限时也报文件不存在;
3、而当所有上级目录都有执行权限的时候,报文件是存在的,一切都正常。
结果,说明file_exists()在判断文件是否存在的时候是递归判断每个目录是不是有执行权限。
修改文件路径为相对路径,得出一样的结果。
- is_file file_exists的区别
- is_file file_exists的区别
- php is_file 和 file_exists区别
- PHP中is_file与file_exists的区别详解
- PHP中file_exists与is_file,is_dir的区别
- PHP中file_exists与is_file,is_dir的区别介绍
- PHP中file_exists与is_file,is_dir的区别介绍
- PHP中file_exists与is_file,is_dir的区别
- PHP中file_exists与is_file,is_dir的区别介绍
- PHP中file_exists与is_file,is_dir的区别
- PHP中file_exists与is_file,is_dir的区别
- PHP中is_file,file_exists的区别,is_file 不能替代file_exits的理由
- PHP中is_file,file_exists的区别,is_file 不能替代file_exits的理由
- php中is_file和file_exists最重要区别
- PHP中file_exists与is_file、is_dir的区别,以及执行效率的比较
- file_exists与is_file、is_dir
- php中is_file与file_exists的性能对比
- php中的几个判断文件和目录的函数 is_file() is_dir() mkdir() file_exists()
- 计算机视觉领域研究资源及期刊、会议介绍
- Android开发学习随笔
- 7员作业假套现公积金获刑
- 数组作为形参的使用
- iOS开发之Objective-C与JavaScript的交互
- is_file file_exists的区别
- 外键和级联
- sql存储过程实例精讲
- Linux中用命令刪除所有.svn文件夾
- sql中游标的使用
- Windows驱动开发WDM (16)- 完成例程 (重新获得IRP控制权)
- [MySQL]MySQL Error 1130 Host 'localhost' is not allowed to connect to this MySQL server
- Android 混淆注意事项
- 体会函数参数传递