Я тестирую инструмент для изменения файлов, и одна довольно важная способность во время этого указывает размер файла, особенно если файл все еще открыт.filesize(): предоставление неверного результата
$file = tempnam('/tmp', 'test_');
file_put_contents($file, 'hello world');
echo 'Initial Read: ' . file_get_contents($file).PHP_EOL;
echo 'Initial Size: ' . filesize($file).PHP_EOL;
$fp = fopen($file, 'a');
fwrite($fp, ' then bye');
echo 'Final Read: ' . file_get_contents($file).PHP_EOL;
fclose($fp);
echo 'Final Size: ' . filesize($file).PHP_EOL;
Этот простой скрипт дает некоторые странные результаты:
Initial Read: hello world
Initial Size: 11
Final Read: hello world then bye
Final Size: 11
Я думал, что окончательный размер был бы результатом файл по-прежнему является открытым, поэтому я добавил fclose($fp);
, однако это сделано нет разницы. В любом случае мне нужно будет определить размер, пока файл все еще открыт.
Окончательный размер должен быть 20. Кто-нибудь знает возможную причину этого и как его обойти?
Thats excellent, спасибо. – Flosculus