file_get_contentsが間違った結果を得る
更新 問題を解決して回答を投稿しました。ただし、私のソリューションは100%理想的ではありません。私はむしろのみ除去するであろうsymlinkからcacheとclearstatcache(true, $target)か、clearstatcache(true, $link)それは動作しません。 また、シンボリックリンクのキャッシュを最初から防ぐか、シンボリックリンクを生成した直後にキャッシュから削除します。残念ながら、私はそれで運がありませんでした。何らかの理由でclearstatcache(true)シンボリックリンクを作成しても機能しない場合でも、キャッシュされます。 私は私の答えを改善し、それらの問題を解決できるすべての人に賞金を喜んで授与します。 編集する clearstatcache実行するたびにファイルを生成してコードを最適化しようとしたので、シンボリックリンクごとに1回だけキャッシュをクリアする必要があります。何らかの理由で、これは機能しません。clearstatcacheがsymlinkパスに含まれるたびに呼び出す必要がありますが、なぜですか?私のソリューションを最適化する方法がなければなりません。 で使用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); } キャッシュを無効にしたくないのですが、file_get_contentsで100%の精度が必要です。 編集する 私のソースコードは長すぎて複雑であるため、投稿できません。問題を再現する最小限の再現可能な例(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('..', '.'))) as …