我的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秒。">