Размер PHP-файла не меняется после добавления - PullRequest
8 голосов
/ 07 ноября 2011

У меня проблема с вводом-выводом PHP-файла.

$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 в качестве размера файла в обоих случаях? Я ожидаю 18 как выход в случае 2.

1 Ответ

15 голосов
/ 07 ноября 2011

Необходимо очистить кэш состояния файла, вызвав функцию clearstatcache до , после вызова файла вы снова вызываете filesize():

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

clearstatcache();

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

Чтобы повысить производительность, PHP кэширует результат filesize(), поэтому вам нужно сказать PHP очистить этот кеш, прежде чем вы снова вызовете filesize() для измененного файла.

...