关于这个函数clearstatcache()看到手册上有这段话,
必须注意的是,对于不存在的文件,PHP 并不会缓存其信息。所以如果调用 file_exists() 来检查不存在的文件,在该文件没有被创建之前,它都会返回 FALSE。如果该文件被创建了,就算以后被删除,它都会返回 TRUE 
于是我尝试这写了如下测试内容:
<?php
$myfile = "somefile.txt";if(!file_exists($myfile)){
$fp = fopen($myfile,'w');
fclose($fp);
}if(file_exists($myfile)){
echo 'file exists';
}else{
echo 'file not exists';
}unlink($myfile);if(file_exists($myfile)){
echo 'file exists';
}else{
echo 'file not exists';
}
?>
按照手册上的意思应该是输出file existsfile exists才正确的。
可是为什么确输出了file existsfile not exists这个呢?
在用file_exists函数时,到底何时需要clearstatcache呢?

解决方案 »

  1.   

    你的代码里没涉及到缓存的东西,所以删除后都是即时获取的,这个函数一般和缓存函数有关,PHP函数中,有部分函数执行之后都会缓存状态,比如stat(),lstat()等
      

  2.   

    手册中说file_exists()也会缓存啊!受影响的函数包括 stat(),lstat(),file_exists(),is_writable(),is_readable(),is_executable(),is_file(),is_dir(),is_link(),filectime(),fileatime(),filemtime(),fileinode(),filegroup(),fileowner(),filesize(),filetype() 和 fileperms()。