非常奇怪的PHP file_exists问题

时间:2013-02-21 21:39:42

标签: php cgi file-exists

我使用file_exists函数遇到了一个非常奇怪的情况。托管公司表示他们的php配置为CGI模式而不是PHP模式。下面是代码。它在加载包含代码的页面50秒左右时动态检查数据文件夹中是否存在名为test.txt的文件。如果找到文件,则显示“文件存在”并退出while循环。如果在50秒内没有找到文件,则显示“文件不存在”并断开循环,完成加载页面。

奇怪的事情1:它没有按预期工作,只能在文件存在时第一次加载页面时找到该文件。即使在刷新页面后test.txt被删除,它仍继续显示“文件存在”。如果test.txt根本不在数据文件夹中,即使我在文件夹中移回test.txt,它也会显示“文件不存在”。

奇怪的事情2:如果我把一个更大的文件说大小超过170K,它看起来运行良好,但不是小文件,特别是在40字节以下。我已经尝试了许多不同的方法来检查文件存在,包括绝对路径,仍然没有运气。

感谢您的任何线索!

加载页面...

$counter= 1;

while ($counter++) {

    sleep(5);

    if (file_exists("data/test.txt")) {
    echo "File exists";
    break;
    }

    if ($counter>10){
    echo "File does not exist";
    break;
    }

}

2 个答案:

答案 0 :(得分:2)

PHP缓存结果。在使用file_exists()之前使用clearstatcache();

答案 1 :(得分:0)

由于您在循环中多次检查此文件是否存在,因此您可能需要将缓存视为一个问题。

取自file_Exists()的{​​{3}} -

  

注意:缓存此函数的结果。有关详细信息,请参阅the documentation

也许您应该尝试将脚本修改为类似的内容 -

while ($counter++) {
  sleep(5);
  clearstatcache(); 
  if (file_exists("data/test.txt")) {
    echo "File exists";
    break;
  }
  ...
}