使用gzwrite()和gzclose()后,filesize不正确

时间:2013-04-17 14:50:51

标签: php zlib

代码本身非常大,所以这里是简化的版本:

<?php
//set common headers
ob_start();
//generate the javascript source
$ret=ob_get_clean();
$handle=gzopen('cache/file.js.gz','wb');
gzwrite($handle,$ret);
gzclose($handle);
header('Content-Length: '.filesize('cache/file.js.gz'),true);
readfile('cache/file.js.gz');

有趣的部分。如果cache/file.js.gz不存在,readfile('cache/file.js.gz');会报告正确的尺寸。如果确实存在,则报告文件的旧大小。

我尝试在fflush($handle)之后添加gzwrite并获得相同的结果。我没有尝试在写入之前取消链接文件。似乎是一个多余的步骤。

输出文件通常非常小。最大的是5kB。

服务器信息:

  • Apache 2.2.23版
  • PHP版本5.2.17

1 个答案:

答案 0 :(得分:1)

在获取文件统计信息之前调用clearstatcache()