我遇到了PHP文件I / O的问题。
$file = fopen("/tmp/test.txt", "w");
fwrite($file,"hi there\n");
fclose($file);
echo filesize("/tmp/test.txt")."\n"; # displays 9
$file = fopen("/tmp/test.txt", "a");
fwrite($file,"hi there\n");
fclose($file);
echo filesize("/tmp/test.txt")."\n"; # also displays 9 !!!!!!!
正如我所看到的,我在初始写入后通过附加更改文件大小。在这两种情况下,为什么我的文件大小为9?我希望在案例2中输出18作为输出。
答案 0 :(得分:15)
您需要在修改文件后再次调用filesize()
之前调用函数clearstatcache 来清除文件状态缓存:
// write into file.
// call filesize()
clearstatcache();
// append to the fiile.
// call filesize()
为了获得更好的性能,PHP缓存filesize()
的结果,因此您需要告诉PHP在修改文件上再次调用filesize()
之前清除该缓存。