У меня есть такие скрипты:
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 () также не влияет.