file_get_contents得到错误的结果
更新资料 我解决了问题并发布了答案。但是,我的解决方案并非100%理想。我宁愿只symlink从cachewith clearstatcache(true, $target)或中删除clearstatcache(true, $link)但那不起作用。 我还宁愿首先避免对符号链接进行缓存,也可以在生成符号链接后立即将其从缓存中删除。不幸的是,我没有运气。由于某些原因clearstatcache(true),创建符号链接后无法正常工作,但仍会对其进行缓存。 我会很高兴地将悬赏奖励给任何能够改善我的答案并解决这些问题的人。 编辑 我试图通过每次clearstatcache运行时生成一个文件来优化我的代码,因此我只需要为每个符号链接清除一次缓存。由于某些原因,这不起作用。clearstatcache每次symlink在路径中包含a时都需要调用它,但是为什么呢?必须有一种方法可以优化我拥有的解决方案。 我使用PHP 7.3.5带nginx/1.16.0。有时file_get_contents在使用时会返回错误的值symlink。问题是删除并重新创建符号链接后,其旧值保留在缓存中。有时返回正确的值,有时返回旧值。它似乎是随机的。 我试图用以下方法清除缓存或防止缓存: function symlink1($target, $link) { realpath_cache_size(0); symlink($target, $link); //clearstatcache(true); } 我并不是真的想要禁用缓存,但是我仍然需要100%的file_get_contents精度。 编辑 我无法发布我的源代码,因为它太长和太复杂了,所以我创建了一个最小的,可重现的示例(index.php),该示例再次出现了问题: <h1>Symlink Problem</h1> <?php $dir = getcwd(); if (isset($_POST['clear-all'])) { $nos = array_values(array_diff(scandir($dir.'/nos'), array('..', '.'))); foreach ($nos as $no) { unlink($dir.'/nos/'.$no.'/id.txt'); rmdir($dir.'/nos/'.$no); } foreach (array_values(array_diff(scandir($dir.'/ids'), array('..', '.'))) …