使用gzwrite()和gzclose()后,文件大小不正确


filesize incorrect after using gzwrite() and gzclose()

代码本身相当大,下面是简化后的版本:

<?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');报告正确的大小。如果存在,则报告文件的旧大小。

我尝试在gzwrite之后添加fflush($handle),结果相同。在写入之前,我没有尝试解除文件的链接。似乎是多余的一步。

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

服务器信息:

    Apache version 2.2.23PHP版本5.2.1

在获取文件状态前调用clearstatcache()