有没有办法在PHP中检测gz文件是否损坏?
我目前正在使用http://www.php.net/manual/de/function.gzread.php#110078来确定文件大小并通过读取整个*文件来进行操作。
$zd = gzopen ( $file, "r" );
$contents = gzread ( $zd, $fzip_size );
gzclose ( $zd );
很遗憾,一些gz文件已经损坏了,最后4个字节并不代表gz文件的真实长度。只要数字是负数,我就能知道出现了问题,但有时它是正数(且非常大),导致内存溢出错误。如何在事先检查文件是否损坏?
- 我读取整个文件,因为我没有找到有效的方法可以逐行读取文件而不知道最长行的大小 - 这导致有些行不完整。
"rb"
而不是"r"
。这样你就可能一开始就不会遇到问题了。 - Mark Adler