php - 文件的 filesize() 不显示实际文件大小
问题描述
我有以下代码:
<?php
for ($i = 0; $i < 6; $i++) {
$file = fopen( 'dummy.txt', 'a' );
echo filesize('dummy.txt') . "<br>";
fwrite($file, "b\n");
echo filesize('dummy.txt') . "<br>";
fclose($file);
}
?>
它产生:
0
0
0
0
0
0
0
0
0
0
0
0
但是,当我打开我的dummy.txt
文件时,它表明我已经成功写出了我想要的字母。当我每次迭代清楚地写入文本文件然后关闭所述文件时,我不明白如何filesize()
显示具有大小的文件。0
有人可以启发我吗?
解决方案
您正在查看一个打开的文件,您需要在调用 filesize() 之前通过插入对 clearstatcache() 的调用来关闭文件并清除缓存
文件大小手册页:http: //php.net/manual/en/function.filesize.php
代码应为:
<?php
for ($i = 0; $i < 6; $i++) {
$file = fopen( 'dummy.txt', 'a' );
fwrite($file, "b\n");
fclose($file);
clearstatcache();
echo filesize('dummy.txt') . "<br>";
}
?>
推荐阅读
- python - 正则表达式 python - 仅当换行符后跟数字或特殊字符和空格时才匹配换行符
- swift - Swift IBDesignable UIButton 类 - 在 didRotate 上更改宽度
- python - 使用 SetParent win32gui 函数将 ffplay 窗口嵌入到 tkinter 框架中
- javascript - 点击事件在我的地图功能中不起作用
- haskell - 无特定原因的稳定名称更改
- javascript - 导航到新页面时,如何使我的拨动开关保持在当前位置?
- php - 用php编辑复选框中的先前记录
- typescript - 类型“any[]”中缺少属性“0”,但类型“[{ post_id: string; 标题:字符串;}]'
- linux - 如何将 linux 脚本从脚本中输出到新的文本文件?
- mule - Mule 4.2.2 Dataweave 不支持 take 功能