我有这样的脚本:
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() 也没有影响。