Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存在非常奇怪的PHP文件问题_Php_Cgi_File Exists - Fatal编程技术网

存在非常奇怪的PHP文件问题

存在非常奇怪的PHP文件问题,php,cgi,file-exists,Php,Cgi,File Exists,我在使用file_exists函数时遇到了一个非常奇怪的情况。托管公司表示,他们的php是在CGI模式下配置的,而不是php模式。下面是代码。加载包含代码的页面时,它会在50秒左右的时间内动态检查data文件夹中是否存在名为test.txt的文件。如果找到文件,则显示“文件存在”并退出while循环。如果在50秒内没有找到文件,则显示“文件不存在”,并在完成加载页面后中断循环 奇怪的事情1:它没有按预期工作,只有在文件存在的情况下第一次加载页面时才能找到文件。即使在我刷新页面时删除了test.t

我在使用file_exists函数时遇到了一个非常奇怪的情况。托管公司表示,他们的php是在CGI模式下配置的,而不是php模式。下面是代码。加载包含代码的页面时,它会在50秒左右的时间内动态检查data文件夹中是否存在名为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;
    }

}

PHP缓存结果。在使用FielyEngultS.(./P>>P>之前使用,因为您在循环中多次检查此文件的存在,所以您可能需要考虑缓存在这里的问题。

取自
文件\u Exists()
-

注意:此函数的结果将被缓存。有关更多详细信息,请参阅

也许您应该尝试将脚本修改为以下内容-

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

在中添加clearstatcache()后,情况有所好转,但仍然不太好。我首先加载页面,当页面加载时,我将test.txt放在data文件夹中,50秒后它就消失了,没有找到任何文件。如果刷新几次,就会找到文件。代码与其他托管服务配合得很好,这可能是CGI模式的问题吗?@use-我不太熟悉这些区别,所以我不能确定。。。但是如果唯一改变的是主机,唯一不同的是CGI模式,这可能就是问题所在…还是不好,这可能是CGI模式的问题吗?有没有其他的检查方法?谢谢