- 浏览: 318016 次
-
文章分类
最新评论
-
一个ID的距离:
我了个擦~高端大气上档次啊~
js生成玫瑰花 源代码 -
abc382410124:
尝试使用开源的免费的编辑器了,学习了
Notepad++ 插件之 TextFX (安装及作用)
转自网络
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()在判断文件是否存在的时候是递归判断每个目录是不是有执行权限。
修改文件路径为相对路径,得出一样的结果。
发表评论
-
PHP+MySQL来实现在线测试quiz功能
2015-05-21 16:13 1114PHP+MySQL来实现在线测试quiz功能 -
PHP FTP操作类( 上传、拷贝、移动、删除文件/创建目录 )
2014-03-17 11:24 623/** * 作用:FTP操作类( 拷贝、移动、删除文件/创 ... -
get_magic_quotes_gpc()
2013-05-14 16:23 376转自网络 在php的配置文件中,有个布尔值 ... -
php可编辑表格
2013-04-11 10:16 1950转自kongzimengsheng 编号 姓 ... -
Windows下使用VS2010编译PHP5.4
2013-04-03 13:31 1128转自: http://www.zhurouyoudu.co ... -
zend framework,,,,,
2013-03-22 15:07 745近几天看了看zf1 优点:数据处理、页面显示等 ... -
PHP 实现301转向代码
2013-03-20 10:06 849301转向定义(转自网络)301转向(或叫301重定 ... -
citymap
2013-03-08 17:32 659,,,,,,,, -
PHP 计算页面执行时间
2013-02-22 10:43 824$t = new executeTime; //phpi ... -
PHP攻击网站防御代码-以及攻击代码反译
2013-02-21 14:23 852<?php //查询禁止IP $ip = ... -
PHP获取用户真实 IP , 淘宝IP接口获得ip地理位置
2013-02-21 14:18 876ip库,免更新。 淘宝IP库: http://ip.taob ... -
针对PHP的网站主要存在下面几种攻击方式:
2013-02-21 11:51 856针对PHP的网站主要存在下面几种攻击方式: 1、命令注入(Co ... -
AMFPHP
2013-01-09 13:57 797下载地址:http://sourceforge.net/pro ... -
PHP网站安装程序的制作
2012-12-28 10:28 5621.制作PHP安装程序的原理 其实PHP程序的安装原理无非就是 ... -
php_xdebug.dll
2012-12-27 17:20 47811111111111111 -
网站统计中的数据收集原理及实现
2012-11-15 09:42 866http://www.admin10000.com/docum ... -
IP及IP段进行访问限制
2012-11-13 14:05 1228IP及IP段进行访问限制 转自:http://hudeyong ... -
Javascript+PHP实现在线拍照功能
2012-09-17 09:16 884转自:http://www.php100.com/html/w ... -
简单分页类
2012-09-04 13:47 701分页 转自网络 已测试 ... -
实现搜索框输入时 提示相近词的功能
2012-09-03 18:32 1052下面是三个文件的代码 把sql文件导入到mysql数据库里 修 ...
相关推荐
看了这篇PHP中file_exists与is_file,is_dir的区别的说法基本明白,PHP的 file_exists = is_dir + is_file。 写程序验证一下: 分别执行1000次,记录所需时间。 文件存在(当前目录) is_file:0.4570ms file_exists:2....
这里我们将详细探讨这两个函数的工作原理以及为什么 `is_file` 不能替代 `file_exists`。 首先,`is_file` 函数的作用是检查指定的路径是否为一个普通文件,它返回 `true` 如果文件存在且是常规文件,否则返回 `...
本文将对is_file()与file_exists()这两个函数进行深入探讨,并通过测试程序来验证在不同情况下使用哪一个函数更为合适。 首先,is_file()函数专门用于判断指定的文件是否存在并且是一个文件。它的参数是一个文件...
性能方面,根据手册,尽管这两个函数的结果都会被缓存,`is_file` 的执行速度通常比 `file_exists` 快很多。这是因为`is_file` 直接针对文件进行检查,而 `file_exists` 需要做额外的判断来确认路径是否为文件或目录...
function isfile($file){ return preg_match('/^[^.^:^?^-][^:^?]*.(?i)' . getexts() . '$/', $file); // 验证文件名是否符合特定格式和扩展名 } function getexts(){ // 列出可接受的文件扩展名 return '(app...
file_exists_glob/master/check_file_exists_globchmod +x check_file_exists_globmv check_file_exists_glob /usr/lib64/nagios/plugins/ 示例输出OK: File 'asdfg*' is absent, good.OK: File 'asdf*' is present,...
有时,开发者可能会混淆 `is_file()` 和 `file_exists()`,但它们在功能上是有区别的。例如,如果你只关心文件是否存在而不在乎它是否为文件,那么使用 `file_exists()` 就足够了。然而,如果你需要确保进行操作的是...
3. 在遍历过程中,可以同时使用 `is_file()` 和 `is_dir()` 来区别处理文件和目录。 4. 如果需要检查路径是否存在,但并不关心它是文件还是目录,可以使用 `file_exists()`。 了解这些知识点后,你可以更有效地在 ...
函数的基本语法为bool file_exists(string $filename),其中参数$filename是需要进行判断的文件或目录的路径。如果路径对应的文件或目录存在,函数返回true,反之返回false。 在使用file_exists函数时,需要注意...
stat(),lstat(),file_exists(),is_writable(),is_readable(),is_executable(),is_file(),is_dir(),is_link(),filectime(),fileatime(),filemtime(),fileinode(),filegroup(),fileowner(),...
这种方法不仅可以解决Safe Mode带来的问题,还适用于`is_dir()`和`is_file()`等其他文件系统相关的函数,确保在受保护的环境下也能正确检测文件或目录的存在。 **原因二:文件权限问题** 在跨平台(如Windows和...
7. **文件属性**:`filemtime()`, `filesize()`, `is_file()`, `is_dir()`等函数用于获取文件的修改时间、大小、类型等信息。 8. **文件指针和流**:`fopen()`打开文件后,可以使用`fgets()`, `fseek()`, `rewind()...
然而,当文件名包含中文字符时,尤其是在UTF-8编码环境下,`file_exists()` 可能无法正常工作,导致判断失败。这是因为某些操作系统(如Linux、Apache等)在处理非ASCII字符(如中文字符)时可能存在兼容性问题。 ...
file_exists('./'.$m_url)) { mkdir($m_url); } $img_path = empty($username)?$m_url:$m_url.$username.'/'; if($username){ if(!file_exists('./'.$img_path)){ mkdir($img_path); } }else...
- 使用`is_file`代替`file_exists`并不总是可行的,因为`is_file`只能检查文件,而不能检查目录,且同样会受到权限的影响。 总之,理解和掌握`file_exists`在不同环境下的行为对于排查这类问题至关重要。在开发过程...