首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP文件大小报告旧大小

PHP文件大小报告旧大小
EN

Stack Overflow用户
提问于 2010-09-20 08:06:31
回答 3查看 5.5K关注 0票数 28

以下代码是我编写的PHP web服务的一部分。它获取一些上传的Base64数据,对其进行解码,并将其附加到文件中。这一切都运行得很好。

问题是,当我读取附加操作之后的文件大小时,我得到了附加操作之前的文件大小。

代码语言:javascript
复制
$fileOut = fopen($filepath.$filename, "ab")
fwrite($fileOut, base64_decode($data));
fflush($fileOut);
fclose($fileOut);

$newSize = filesize($filepath.$filename);   // gives old file size

我做错了什么?

系统为:

  • PHP 5.2.14
  • Apache 2.2.16
  • Linux内核2.6.18
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-20 08:12:31

在基于Linux的系统上,filesize()获取的数据是“状态缓存”的。

尝试在调用filesize之前调用clearstatcache();

票数 46
EN

Stack Overflow用户

发布于 2010-09-20 08:12:10

根据PHP手册:

此函数的结果被缓存。有关详细信息,请参阅clearstatcache()。

http://us2.php.net/manual/en/function.filesize.php

基本上,您必须在文件操作之后清除stat缓存:

代码语言:javascript
复制
$fileOut = fopen($filepath.$filename, "ab")
fwrite($fileOut, base64_decode($data));
fflush($fileOut);
fclose($fileOut);

clearstatcache();

$newSize = filesize($filepath.$filename);
票数 10
EN

Stack Overflow用户

发布于 2010-09-20 08:12:37

PHP将它读取的所有文件元数据存储在缓存中,因此很可能文件大小已经存储在该缓存中,您需要清除它。在调用filesize之前,请查看clearstatcache并调用它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3747982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档