附加后PHP文件大小不变

时间:2011-11-07 13:39:35

标签: php caching file-io filesize

我遇到了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作为输出。

1 个答案:

答案 0 :(得分:15)

您需要在修改文件后再次调用filesize() 之前调用函数clearstatcache 来清除文件状态缓存:

// write into file.
// call filesize()

clearstatcache();

// append to the fiile.
// call filesize()

为了获得更好的性能,PHP缓存filesize()的结果,因此您需要告诉PHP在修改文件上再次调用filesize()之前清除该缓存。