为什么我的共享主机 Web 服务器缓存我的 PHP 脚本的文件访问权限?



我的PHP脚本在我的共享主机网站服务器上运行,在服务器上写一个文本文件,以在调用之间保存数据问题是读取文本文件似乎显示了最近的版本;该文件的最新版本不存在。就好像服务器正在缓存我的脚本的文件访问权限。

更详细地说:脚本有两种模式,写入和读取,这取决于(无关(。

写入模式中,脚本包含一个HTML表单,用户可以在其中输入数据。Submit按钮重新加载相同的脚本,其中用户的数据在URL中编码为GET变量。脚本将数据附加到服务器上的文件中。代码为:

$dfile = fopen("datfile.txt","a");
fwrite($dfile, $_GET['myname']."n");
fclose($dfile);

读取模式中,脚本读取并显示数据文件:

$dfile = fopen("datfile.txt","r");
if($dfile) while(!feof($dfile))
echo fgets($dfile)."<br>";
fclose($dfile);

问题是读者看到的不一定是作者的最新版本。它通常是最近的版本,就好像服务器正在缓存脚本的文件读取一样。我使用FTP来确定文件中真正包含的内容。

我已经尝试了几种方法来清除缓存,但没有效果。许多PHP版本,从4.x到7.3。

我发现了以下站点:https://www.php.net/manual/en/function.clearstatcache.php

向下滚动,上面写着:

"请注意,此函数只影响文件元数据。但是,所有PHP文件系统函数也会自己缓存实际文件内容。如果您愿意,可以在PHP.ini中使用"realpath_cache_size=0"指令来禁用内容缓存。默认的内容缓存超时为120秒。">

最新更新