我一直在构建一个类来在 PHP 中创建 ZIP 文件。ZipArchive 的替代方案,假设它在服务器中是不允许的。与那些免费服务器一起使用的东西。
它已经开始工作了,使用 PHP 构建 ZIP 结构,并使用 gzdeflate() 生成压缩数据。
问题是,gzdeflate() 要求我将整个文件加载到内存中,并且我希望类的工作限制在 32MB 的内存中。目前它存储的文件大于 16MB,完全没有压缩。
我想我应该让它压缩数据块,16MB x 16MB,但我不知道如何连接两个 gzdeflate() 的结果。
我一直在测试它,它似乎需要在最后 16 位中进行一些数学运算,有点buff->last16bits = (buff->last16bits & newblock->first16bits) | 0xfffe
,它有效,但不适用于所有样本......
问题:如何在不解压缩的情况下连接两个 DEFLATEd 流?