gpt4 book ai didi

php解压大文件

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

我正在尝试使用 php zip 存档解压缩一个巨大的文件(压缩 400+M 超过 4G 解压缩)。我只在压缩文件中解压缩一个 csv 文件。我感兴趣的文件,解压缩后,超过 4G。我从文件末尾得到了 3 条记录,这个过程开始进入 lala land。 .我的意思是这个过程只是继续..没有输出..没有错误没有循环它只是继续......我不知道它在做什么..我的代码很简单:

$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE)
{
$num = $zip->numFiles;
for($i = 0; $i < $zip->numFiles; $i++)
{
$filename = $zip->getNameIndex($i);
// if its the file I want then...
$content = '';
// my output file .. yes I've already checked to make sure the dir exists
$unzipped = fopen($dir ."/2" . $filename , 'wb');
$fp = $zip->getStream($filename);
if(!$fp) exit("failed\n");
while (!feof($fp))
{
$chunkSize = 10240;
$contents = fread($fp, $chunkSize);
$fwrite = fwrite($unzipped, $contents);
}
fclose($fp);
fclose($unzipped);
}

$zip->close();
fclose($filename);

}

我删除了转到另一个文件以跟踪进度的写入语句。我得到了大部分文件..(正如我所说的整个文件少了 3 条记录)...但是这个过程似乎在某个地方发生了..它发生在恐惧中我只是无法弄清楚发生了什么..它还没有达到eof ..源完好无损(在fread之前用is_source($ fp)检查过..它没有抛出任何错误..关闭浏览器不会停止它..甚至无法停止apache..必须关闭才能结束它...

有什么想法吗??

谢谢

最佳答案

老实说(在 PHP 中)听起来像是一个错误。

您可能想尝试将调用输出到 memory_get_usage () 帮你调试。但是,也请参阅 stream_copy_to_stream () 因为你可以摆脱所有循环的麻烦。保持写入的总字节数以查看出错的数字是否看起来可疑也可能很有趣。

关于php解压大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10670513/

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