次のようなスクリプトがあります。
file_put_contents("filters.php", '<? $filter_arr = '.var_export($filter_arr, true).'; ?>');
include("filters.php");
また:
$xml = '<?xml version="1.0" encoding="UTF-8"?>'."\n<xml>\n\t<items>\n".$xml_0."\n\t</items>\n</xml>";
file_put_contents($PROJECT_ROOT."/xml/$file_type.xml", $xml);
$upload_result = ftp_put($ftp_stream, $destination_file, $PROJECT_ROOT."/xml/$file_type.xml", FTP_BINARY);
実際には、これらのファイルへの変更は物理的に適用されます (ファイルに書き込まれます)。
ただし、include() の後で表示されなかったり、ftp_put() によってリモート サーバーに送信されなかったりすることがあります。
PHPがこのファイルをキャッシュしているようです。
include() の前に sleep(1) を追加しても役に立ちません。
Aには次のようなテストもあります:
for ($i=1; $i <= 100; $i++) {
echo "$i)";
$filter_arr = array($i);
file_put_contents("test.txt", '<? $filter_arr = '.var_export($filter_arr, true).'; ?>');
include("test.txt");
echo $filter_arr[0]."<br>";
}
出力の約 90% は正常です。
1) 1
2) 2
...
100) 100
出力の約 10% が間違っています。
1) 1
2) 1
...
100) 1
flock() または clearstatcache() で遊んでも影響はありません。