我試圖解壓縮一個巨大的文件(400 + M壓縮以及4G解壓縮)使用php zip壓縮文件。我只解壓縮壓縮文件中的一個csv文件..我感興趣的文件解壓縮超過4G ..我從文件末尾獲得3條記錄,並且該過程進入lala land。 。我指的是過程只是那張..沒有輸出..沒有錯誤,沒有循環它只是...我還沒有線索,以什麼做了..我的代碼很簡單:PHP解壓縮大文件
$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 ..源是完整的(使用is_source($ fp)在fread之前進行檢查..它不會拋出錯誤..關閉瀏覽器並不能阻止它..甚至不能停止阿帕奇..不得不關閉,結束它...
任何想法?
感謝
據有人在文檔頁面中的功能似乎使用相當多的內存自身。所以如果這是真的,記憶是問題在這裏,這可能不是解決方案。 – Blizz
嗨克里斯,試着用有趣的結果,它沒有複製整個文件,但它並沒有進入拉拉陸地,這種導致我相信第一個問題可能是最初的zip流..它可能沒有得到一切......但這是一個不同的問題,我需要在發佈之前進行一些研究。再次感謝。 – Bridget