Динамически измененные файлы в PHP. Иногда изменения не отображаются в include (), ftp_put ()

У меня есть такие скрипты:

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-кеширование этих файлов.

Добавление sleep (1) до include () не помогает.

А также имеют такой тест:

 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>"; } в 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 () также не влияет.

Related of "Динамически измененные файлы в PHP. Иногда изменения не отображаются в include (), ftp_put ()"