gpt4 book ai didi

php - gzdeflate() 和大量数据

转载 作者:搜寻专家 更新时间:2023-10-31 21:46:52 27 4
gpt4 key购买 nike

我一直在构建一个类来用 PHP 创建 ZIP 文件。 ZipArchive 的替代方案,假设它在服务器中是不允许的。与这些免费服务器一起使用的东西。

它已经可以正常工作了,使用 PHP 构建 ZIP 结构,并使用 gzdeflate() 生成压缩数据。

问题是,gzdeflate() 要求我将整个文件加载到内存中,并且我希望该类在 32MB 内存范围内工作。目前它存储大于 16MB 的文件,完全没有压缩。

我想我应该让它以 block 的形式压缩数据,16MB x 16MB,但我不知道如何连接两个 gzdeflate() 的结果。

我一直在测试它,它似乎需要在最后 16 位中进行一些数学运算,类似于 buff->last16bits = (buff->last16bits & newblock->first16bits) | 0xfffe,它有效,但不适用于所有样本...

问题:如何在不解压缩的情况下连接两个 DEFLATEd 流?

最佳答案

PHP 流过滤器用于执行此类任务。 stream_filter_append可以在读取或写入流时使用。例如

    $fp = fopen($path, 'r');
stream_filter_append($fp, 'zlib.deflate', STREAM_FILTER_READ);

现在 fread 将返回你缩小的数据。

关于php - gzdeflate() 和大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1400449/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com