我正在尝试使用 php zip 存档解压缩一个巨大的文件(400+M 压缩超过 4G 解压缩)。我只解压缩压缩文件中的一个 csv 文件。我感兴趣的文件解压缩后超过 4G。我从文件末尾获得了 3 条记录,并且该过程开始进入 lala 土地。 .我的意思是这个过程只是继续......没有输出..没有错误没有循环它只是继续......我不知道它在做什么......我的代码很简单:
$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 条记录)......但是这个过程似乎在某个地方发生了......它发生在 fread 上,我只是不知道发生了什么..它没有达到eof ..源是完整的(在fread之前用is_source($fp)检查..它没有抛出任何错误..关闭浏览器并不能阻止它..甚至不能停止apache ..必须关闭才能结束它...
有任何想法吗??
谢谢