文件大小():在不正确的结果(filesize() : giving incorrect resul

2019-10-20 23:35发布

我修改的文件,并在这一个相当重要的能力讲的是文件的大小,尤其是当文件仍然打开测试出的工具。

$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有谁知道这可能的原因和如何解决呢?

Answer 1:

由于此评论时指出,需要调用clearstatcache()调用之前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);
clearstatcache();

echo 'Final Size:   ' . filesize($file).PHP_EOL;


文章来源: filesize() : giving incorrect result
标签: php file io size