gzdecode() 内存不足 - 大小已耗尽

问题描述 投票:0回答:2

你知道在 php 中解压大型 .gz 的任何解决方案吗(>200 MB .gz,>4GB 原始文件...可能是 >1GB 或 >2GB 的包)?

需要逐部分解码.gz的解决方案。

代码

gzdecode(@file_get_contents($file))

出现 PHP 错误:

PHP 致命错误:允许的内存大小 268435456 字节已耗尽(尝试分配...

当然。

我无法增加网络服务器的 PHP 内存限制,并且当数据 >>1GB 时尝试似乎没有意义。

使用 inflate_add() 不是解决方案,它会生成相同的“PHP 致命错误:允许的内存大小...耗尽...”。

有什么想法吗? (我在12等中没有找到答案)

php out-of-memory gzip zlib
2个回答
1
投票

使用

gzopen()
而不是
gzdcode()
。然后您可以使用
gzread()
一次读取小块内容。


0
投票

就在这里,我的错误可能会有所不同,但谷歌首先显示了这个页面。所以对于来这里的人来说:

'gzdecode():内存不足'

在我的例子中,这是由于错误放置的布尔值告诉 gzdecode 解码的长度将为 1。

© www.soinside.com 2019 - 2024. All rights reserved.