我正在编写一个生成 gzip 文件的 PHP 脚本。我一直在使用的方法是在 PHP 中构建一个字符串,然后 gzcompress() 将该字符串写入脚本末尾的文件中。
现在我正在用更大的文件测试我的脚本并遇到内存分配错误。结果字符串似乎变得太大而无法一次保存在内存中。
为了解决这个问题,我尝试使用 gzopen() 和 gzwrite() 来避免在 PHP 中分配大字符串。但是,使用 gzwrite() 生成的 gzip 压缩文件与我使用 gzcompress() 时非常不同。我尝试了不同的拉链级别,但没有帮助。我也尝试过使用 gzdeflate() 并最终得到与 gzwrite() 相同的结果,但仍然与 gzcompress() 不同。不同的不仅仅是前两个字节(zlib 头),而是整个文件。
gzcompress() 与 PHP 中的其他 gzip 函数有何不同?有没有一种方法可以在逐步产生结果的同时模拟 gzcompress() 的结果?